LINUX机器相互打通脚本

上一篇 / 下一篇  2010-12-21 13:23:51 / 个人分类:自动化测试

大家在Linux环境下是不是经常需要打通A,B机器的通道呢?或许你可以生成公钥的方式,或许你可以写一个expect脚本,但是都很繁琐,而且有多台机器的话更是麻烦,还是省点力气吧。推荐大家使用一下autocon.sh.   
用法:
autocon.sh -u username -n ip即可。


脚本如下:
#!/bin/sh

TAG_USER=`whoami`
let N_HOSTS=0

while getopts ":u:n:h" optname
  do
    case "$optname" in
      "u")
        TAG_USER=$OPTARG
        ;;
      "n")
        TAG_HOST[$N_HOSTS]=$OPTARG
        let N_HOSTS=N_HOSTS+1
        ;;
      "h")
        echo "./give_auth.sh -u user -n hostname"
        exit
        ;;
      "?")
        echo "Unknown option $OPTARG"
        exit
        ;;
      ":")
        echo "No argument value for option $OPTARG"
        exit
        ;;
      *)
      # Should not occur
        echo "Unknown error while processing options"
        exit
        ;;
    esac
  done

cd ~
if (!(test-f ".ssh/id_rsa") || !(test -f ".ssh/id_rsa.pub"))
  then
    mkdir -p .ssh
    chmod 755 .ssh
    ssh-keygen -f id_rsa -t rsa -N ""
    mv -f id_rsa.pub ~/.ssh/
    mv -f id_rsa ~/.ssh/
fi
cd - >/dev/null

let j=0
while [ $j -lt $N_HOSTS ]; do

echo "processding ${TAG_HOST[$j]}..."
KEY=`cat ~/.ssh/id_rsa.pub`
DIR_EXIST=`ssh $TAG_USER@${TAG_HOST[$j]} "grep \"$KEY\" ~/.ssh/authorized_keys > /dev/null 2>&1; echo \\\$?"`

if [ $DIR_EXIST -ne 0 ]
  then
  # add
  ssh $TAG_USER@${TAG_HOST[$j]} "echo \"$KEY\" >> ~/.ssh/authorized_keys"
fi

let j=j+1
done

echo "done."

当然除了这个脚本外,目前的技术要么用key,要么用expect来写一个函数也可以啊。将密码放入一个文件。
#默认密码,请修改为自己的即可。   
PW=O5tZ5GsB

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} }"
}

TAG:

 

评分:0

我来说两句

Open Toolbar