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: