用expect实现ssh自动登录对服务器进行批量管理
2010-08-10 12:01
681 查看
1.实现ssh自动登录完成任务的expect脚本
[root@localhost shell]# cat login.exp
#!/usr/bin/expect -f
set ipaddress [lindex $argv 0]
set passwd [lindex $argv 1]
set timeout 30
spawn ssh root@$ipaddress
expect {
"yes/no" { send "yes\r";exp_continue }
"password:" { send "$passwd\r" }
}
expect "]*"
send "mkdir -p /tmp/haha\r"
send "exit\r"
2.调用login.exp完成批量管理
#!/bin/bash
for i in `awk '{print $1}' passwd.txt`
do
j=`awk -v I="$i" '{if(I==$1)print $2}' passwd.txt`
expect /root/shell/login.exp $i $j
done
3.passwd.txt
192.168.0.2 password2
192.168.0.3 password3
另一自动登录的例子:
########### auto_login.sh #####################
1 #!/usr/local/bin/expect
2 set PASSWD [lindex $argv 1]
3 set IP [lindex $argv 0]
4 set CMD [lindex $argv 2]
5 spawn ssh $IP $CMD
6 expect "(yes/no)?" {
7 send "yes\r"
8 expect "password:"
9 send "$PASSWD\r"
10 } "password:" {send "$PASSWD\r"} "*host " {exit 1}
11 expect eof
第一行制定使用/usr/local/bin目录下的expect命令对后面的程序进行解释。
第二行,三行,四行,分别从命令行参数中获取要登录的主机IP地址,登陆密码,以及要执行的命令。
第五行,大概就是要触发这样一个事件,执行ssh $IP $CMD命令。
第6行道第11行就是expect的整个交互过程了。
如果读取到(yes/no)?提示符,就输入yes并回车,如果读取到password:提示输入密码的字符串,就输入用户登录密码(root用户)。
当然如果不是第一次登陆,以前已经登录过的话,当输入ssh $IP $CMD回车后,会直接提示输入密码也就是说会读到字符串”* password:”,这个时候会输入密码回车(send "$PASSWD\r").
另外,如果主机不可达的话,(yes/no)?和”password:”的可能都不会出现,系统会提示:
“No route to host”这个时候,我们退出程序。
[root@localhost shell]# cat login.exp
#!/usr/bin/expect -f
set ipaddress [lindex $argv 0]
set passwd [lindex $argv 1]
set timeout 30
spawn ssh root@$ipaddress
expect {
"yes/no" { send "yes\r";exp_continue }
"password:" { send "$passwd\r" }
}
expect "]*"
send "mkdir -p /tmp/haha\r"
send "exit\r"
2.调用login.exp完成批量管理
#!/bin/bash
for i in `awk '{print $1}' passwd.txt`
do
j=`awk -v I="$i" '{if(I==$1)print $2}' passwd.txt`
expect /root/shell/login.exp $i $j
done
3.passwd.txt
192.168.0.2 password2
192.168.0.3 password3
另一自动登录的例子:
########### auto_login.sh #####################
1 #!/usr/local/bin/expect
2 set PASSWD [lindex $argv 1]
3 set IP [lindex $argv 0]
4 set CMD [lindex $argv 2]
5 spawn ssh $IP $CMD
6 expect "(yes/no)?" {
7 send "yes\r"
8 expect "password:"
9 send "$PASSWD\r"
10 } "password:" {send "$PASSWD\r"} "*host " {exit 1}
11 expect eof
第一行制定使用/usr/local/bin目录下的expect命令对后面的程序进行解释。
第二行,三行,四行,分别从命令行参数中获取要登录的主机IP地址,登陆密码,以及要执行的命令。
第五行,大概就是要触发这样一个事件,执行ssh $IP $CMD命令。
第6行道第11行就是expect的整个交互过程了。
如果读取到(yes/no)?提示符,就输入yes并回车,如果读取到password:提示输入密码的字符串,就输入用户登录密码(root用户)。
当然如果不是第一次登陆,以前已经登录过的话,当输入ssh $IP $CMD回车后,会直接提示输入密码也就是说会读到字符串”* password:”,这个时候会输入密码回车(send "$PASSWD\r").
另外,如果主机不可达的话,(yes/no)?和”password:”的可能都不会出现,系统会提示:
“No route to host”这个时候,我们退出程序。
相关文章推荐
- 用expect实现ssh自动登录对服务器进行批量管理
- 用expect实现ssh自动登录服务器并进行批量管理的实现方法
- 用expect实现ssh自动登录对服务器进行批量管理
- 用expect实现ssh自动登录对服务器进行批量管理
- 用expect实现ssh自动登录服务器并进行批量管理的实现方法
- 用了一天的时间,linux下expect实现ssh自动登录服务器记,鄙视下网上各种抄来抄去残段子
- 用了一天的时间,linux下expect实现ssh自动登录服务器记,鄙视下网上各种抄来抄去残段子
- iTerm2 结合 Linux expect 实现 ssh 自动登陆, 通过跳板机登录服务器内网功能
- ssh,expect脚本实现远程登录,拷贝命令scp,rsync服务器的搭建
- [置顶] Linux下用expect实现ssh自动登录并执行脚本
- 利用expect实现自动登录服务器
- expect脚本实现ssh自动登录
- 用expect实现SCP/SSH自动输入密码登录
- expect实现ssh自动登录
- linux下实现ssh自动登录远程服务器
- 使用expect实现ssh不输入密码登录远程服务器
- expect实现ssh自动登录
- 用expect实现的自动登录到多台服务器的shell脚本
- expect实现ssh自动登录
- 无密钥登录的自动脚本实现(ssh-copy-id、expect免交互输入脚本)