当咱们要上线一个新代码的时候,若是机器少,咱们的工做量不会很大,很容易完成,若是设备不少,有几十台,上百台的话,那咱们的工做量会很是大,并且也不规范,这时,咱们就能够用能够用开源的软件,expect脚本语言,进行实现分发系统的功能。shell
一、expect脚本远程登陆
二、安装:yum install -y expect
三、写一个expect的自动远程登陆脚本
内容以下:ssh
#! /usr/bin/expect set host "192.168.1.31" #这是expect的变量,它和shell不一样的是变量前面要加set set passwd "123456" spawn ssh root@$host expect { "yes/no" { send "yes\r"; exp_continue} #第一次登陆会提示yes或者是no,send是发送。\r是回车。 "assword:" { send "$passwd\r" } } interact # 须要停留在远程的机器上,不须要退出。
四、给脚本权限:chmod a+x 1.expect
五、执行:./1.expectide
一、自动远程登陆后,执行命令并退出
增长脚本以下内容:spa
#!/usr/bin/expect set user "root" set passwd "123456" spawn ssh $user@192.168.1.31 expect { "yes/no" { send "yes\r"; exp_continue} "password:" { send "$passwd\r" } } expect "]*" send "touch /tmp/12.txt\r" expect "]*" send "echo 1212 > /tmp/12.txt\r" expect "]*" send "exit\r"
二、执行脚本
./2.expect
三、 回车退出
四、从新执行自动登陆脚本
五、./1.expect
六、查看远程建立的文件
七、ls -l /tmp/2018.txt code
一、传递参数
vi 3.expect
增长以下脚本内容:it
#!/usr/bin/expect set user [lindex $argv 0] #把第一个参数的值赋给user set host [lindex $argv 1] set passwd "123456" set cm [lindex $argv 2] spawn ssh $user@$host expect { "yes/no" { send "yes\r"} "password:" { send "$passwd\r" } } expect "]*" send "$cm\r" expect "]*" send "exit\r"
二、给权限;
chmod a+x 3.expect
三、执行
./3.expect root 192.168.1.31 "ls;w;vmstat 1" #当有多个命令 须要用双引号 做为一个参数传进去
四、查看
ls;w;vmstat 1class