ssl/scp等自动连接处理

来源:互联网 发布:mysql安装 编辑:程序博客网 时间:2024/05/16 07:39

在完成交叉编译OPENSSH后,又有一个需求:要求自动登录服务器,并从服务器传输文件。如何处理呢?

这里要用到expect,分别实现一个发送和接收程序。参考此程序可以实现ftp/ssh等需要用户输入的场景。

server_send.sh

#!/usr/bin/expect -fset password 123456 #变量赋值set master_file [lindex $argv 0] #将第一个输入参数赋值给master_fileset slave_ip [lindex $argv 1]    #将第二个输入参数赋值给slave_ipset slave_file [lindex $argv 2]  #将第三个输入参数赋值给slave_file#send to stbspawn scp -r $master_file root@$slave_ip:$slave_file #spawn启动一下进程来处理scp命令set timeout 300                  #设置超时300sexpect "*password:"              #如果屏幕打印中有“*password:”,则发送密码set timeout 300send "$password\r"               #发送密码,这样免去用户手动输入,实现自动化set timeout 300send "exit\r"expect eof                       #等待进行结束

server_recv.sh

recv与send本质相同,只是scp命令拷贝的方向不一致。

root@inspur:/home/liufei/github/shell/expect# cat server_recv.sh #!/usr/bin/expect -fset password 123456set master_file [lindex $argv 0]set slave_ip [lindex $argv 1]set slave_file [lindex $argv 2]spawn scp -r root@$slave_ip:$slave_file $master_fileset timeout 300 #expect "root@10.180.89.199's password:"expect "*password:"set timeout 300 send "$password\r"set timeout 300 send "exit\r"expect eofroot@inspur:/home/liufei/github/shell/expect# 
0 0
原创粉丝点击