shell ssh expect 远程服务器执行命令

expect是一种能够按照脚本内容里面设定的方式与交互式程序进行会话的程序。根据脚本内容,Expect可以知道程序会提示或反馈什么内容以及 什么是正确的应答。它是一种可以提供分支和嵌套结构来引导程序流程的解释型脚本语言。

shell 功能很强大,但是不能实现有交互功能的多机器之前的操作,例如ssh和ftp。而expect可以帮助我们来实现。 ssh 无法直接 输入密码 需要安装 expect

yum install expect
apt-gey install expect
  • ssh实现自动登录,并停在登录服务器上 interact //交互模式,用户会停留在远程服务器上面.
  • ssh远程登录到服务器,并且执行命令,执行完后并退出 expect eof //退出远程服务器
  • 在多台控服务器上执行命令 阿里云
    #!/usr/bin/expect -f
    #web1
    set ip 192.168.1.92
    set password root
    set timeout 10
    spawn ssh root@$ip
    expect {
    "*yes/no" { send "yes\r"; exp_continue}
    "*password:" { send "$password\r" }
    }
    expect "#*"
    #要执行的命令
    send "mkdir /home/yaoqingsong1\r"
    send  "exit\r"
    expect eof
    #web2
    set ip 192.168.1.93
    set password root
    set timeout 10
    spawn ssh root@$ip
    expect {
    "*yes/no" { send "yes\r"; exp_continue}
    "*password:" { send "$password\r" }
    }
    expect "#*"
    #要执行的命令
    send "mkdir /home/yaoqingsong2\r"
    send  "exit\r"
    expect eof