acctmod-ftp.sh

本文介绍了一个使用Shell脚本来实现邮箱地址替换的方法。通过一系列条件判断,确保输入格式正确,并能够根据不同情况将原始邮箱地址中的@符号替换成指定字符,同时完成相关配置文件中的邮箱更新。
#!/bin/sh

if [ "$1" = "" ]; then exit 1 ; fi 
if [ "$2" = "" ]; then exit 1 ; fi 
c1=`expr index $1 "@"` 
if [ $c1 = 0 ]; then exit 1 ; fi 
c2=`expr index $2 "@"` 
if [ $c2 = 0 ]; then exit 1 ; fi

n1=$1 
n2=`echo ${n1##*@}` 
if [ "$n2" = "***.cn" ] 
then 
n3=`echo ${n1%%@*}` 
else 
n3=`echo ${n1/@/.}` 
fi

n4=$2 
n5=`echo ${n4/@/.}` 
n6=`echo ${n4##*@}` 
if [ "$n6" = "***.cn" ] 
then 
exit 1 
fi

SAVEIFS=$IFS 
IFS=" 
"

cou2=`find /proftpd/ -follow -name passwd -exec grep -q ^$n3: {} ; -print` 
if [ -n "$cou2" ] 
then 
for f in $cou2 
do 
echo "ftp: copy $n3 -> $n5" 
echo $f 
g=`grep ^$n3: $f` 
i=`echo ${g/$n3:/$n5:}` 
grep -q ^$i$ $f 
if [ $? -ne 0 ] 
then 
sed -i.bak "/^$n5:/d" $f 
sed -i.bak "/^$n3:/ a $i" $f 
fi

f2=`echo ${f%/*}`/group 
echo $f2 
cou2=`grep -E "(:|,)$n3(,|$)|(:|,)$n5(,|$)" $f2` 
if [ $? = 0 ] 
then 
perl -i.bak -lape '{s/(:|,)'"$n5"'(,|$)/$1/;s/,$//;if(m/(:|,)'"$n3"'(,|$)/){$_.=",'"$n5"'"}}' "$f2" 
fi 
done 
fi

IFS=$SAVEIFS

转载于:https://my.oschina.net/tadcat/blog/149851

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值