使用shell函数实现Linux下操作自动化

函数库中的部门代码
远程执行命令,传送文件,或者文件同步。自动输入密码。需要expect的支持。
常在linux下操作的话,这些肯定是容易用到的。绿色的。不用使用rexec和rsync。
更方便。存入文件,source 一下即可。

用法
登陆   se ip/主机名
gexec ip/主机名   ip/主机名   'cmd'
gsyn ip/主机名   ip/主机名   文件或者目录的位置

#ssh login or execute comd
se()
{
       [[ -z $1 ]]&& echo se se3 who
       [[ "$1" > = ]]&&host=$1.xxxxx.com||host=119.42.239.$1
       ssh $host $2

}

#execute cmd in group, example, gexec se2 se3 35 'ps -x'
gexec()
{
       for i in ${*:1:$#-1};
       do
               [[ $i > = ]]&&host=$i.xxxxx.com||host=119.42.239.$i
               ex ssh $host ${*:$#}
       done
}

#distribute directorys or files, example, gsyn se2 se3 35 ~/dir
gsyn()
{
       cd `dirname ${*:$#}`
       cd $OLDPWD
       for i in ${*:1:$#-1};
       do   
               [[ $i > = ]]&&host=$i.xxxxx.com||host=119.42.239.$i   
               ex scp -r ${*:$#} $host:$OLDPWD/
       done
}

gscp()
{
       for i in ${*:1:$#-2};
       do
               [[ $i > = ]]&&host=$i.xxxxx.com||host=119.42.239.$i
               ex scp -r ${*:$#-1:1} $host:~/${*:$#}           
       done
}

check()
{
       if [ $# = 0 ]
       then
               echo "check ip|file|config string"
               return
       fi
       case $* in
               file)
               find . -name "*.*" | xargs grep /home/.* | awk -F/home '{print $1":/home"$2}'| sed -e 's/[^a-zA-Z0-9]*$//'|awk -F: '{gsub("\""," ");system("if [ ! -e   "$3" ] ;then echo \""$0"\" ;fi;")}'
               echo "WARNNING, those files wasn't exist,please check "
               ;;
               ip)
               find . -name "*.*" |xargs grep "[1-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"
               ;;
               *)
               ls|xargs grep "$1"
               temp=`ls|xargs grep "$1"|sed -n $3p|uniq`           
               if [[ -n $2 ]]
               then
                       temp=`echo $temp|awk -F= '{print $2}'`
                       [[ $temp = "$2" ]]&&print OK||print WARNNING
               fi
               ;;
       esac
}

#set for load seven.sh when login
autostart()
{
       sed -i -e '/source seven/d' ~/.bashrc
       echo "source seven.sh ||: ; source /home/huangysh/seven.sh ||:" >>~/.bashrc && print "OK, you already have the power of qa shell functions, good luck"   
}

#the core of whole script. used for automation
ex()
{
       expect -c "set timeout -1;spawn $*; while {1} {expect eof {puts \nEX_OK\n;exit}   Password {puts Password;send ${PW}\n}   (yes/no)? {puts EX_YES;send yes\n}   timeout {puts EX_TIMEOUT;interact} }"
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值