shell項目-分發系統-expect
阿新 • • 發佈:2018-04-25
expect 遠程操作 安裝expect
[root@lynn-04 ~]# yum install -y expect
用腳本登陸遠程機器
編寫腳本1.expect
內容如下:
[root@lynn-04 expect]# vim 1.expect #!/usr/bin/expect set host "192.168.130.128" #定義變量 set passwd "6811327" #定義變量 spawn ssh root@$host expect { "yes/no" {send "yes\r"; exp_continue } #當提示語句出現yes/no 輸入yes然後繼續 "password:" {send "$passwd\r" } #當提示語句出現password 輸入密碼 } interact
執行結果
[root@lynn-04 expect]# chmod a+x 1.expect ; ./1.expect
spawn ssh [email protected]
[email protected]‘s password:
Last login: Wed Apr 25 07:48:41 2018 from 192.168.130.1
[root@lynn-06 ~]#
用腳本登陸遠程機器執行命令後退出
編寫腳本2.expect
內容如下:
[root@lynn-04 expect]# vim 2.expect #!/usr/bin/expect set user "root" set passwd "6811327" spawn ssh [email protected] 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 "ls -l /tmp/12.txt\r" expect "]*" send "cat /tmp/12.txt\r" expect "]*" send "exit\r"
執行結果
[root@lynn-04 expect]# chmod a+x 2.expect ; ./2.expect spawn ssh [email protected] [email protected]‘s password: Last login: Wed Apr 25 08:07:55 2018 from 192.168.130.116 [root@lynn-06 ~]# touch /tmp/12.txt [root@lynn-06 ~]# echo 1212 > /tmp/12.txt [root@lynn-06 ~]# ls -l /tmp/12.txt -rw-r--r-- 1 root root 5 4月 25 08:32 /tmp/12.txt [root@lynn-06 ~]# cat /tmp/12.txt 1212 [root@lynn-06 ~]# [root@lynn-04 expect]#
腳本傳遞參數
編寫腳本3.expect
內容如下:
[root@lynn-04 expect]# vim 3.expect
#!/usr/bin/expect
set user [lindex $argv 0]
set host [lindex $argv 1]
set passwd "6811327"
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"
執行結果
[root@lynn-04 expect]# chmod a+x 3.expect ; ./3.expect root 192.168.130.128 ls
spawn ssh [email protected]
[email protected]‘s password:
Last login: Wed Apr 25 08:32:02 2018 from 192.168.130.116
[root@lynn-06 ~]# ls
anaconda-ks.cfg com zabbix-release-3.2-1.el7.noarch.rpm
[root@lynn-04 expect]# ./3.expect root 192.168.130.128 "ls;w;ps aux|grep sshd"
spawn ssh [email protected]
[email protected]‘s password:
Last login: Wed Apr 25 08:50:42 2018 from 192.168.130.116
[root@lynn-06 ~]# ls;w;ps aux|grep sshd
anaconda-ks.cfg com zabbix-release-3.2-1.el7.noarch.rpm
08:52:15 up 1:04, 2 users, load average: 0.00, 0.01, 0.01
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.130.1 07:48 15.00s 0.01s 0.01s -bash
root pts/1 192.168.130.116 08:52 0.00s 0.00s 0.00s w
root 826 0.0 0.4 105996 4128 ? Ss 07:48 0:00 /usr/sbin/sshd -D
root 947 0.0 0.5 148316 5376 ? Ss 07:48 0:00 sshd: root@pts/0
root 1098 0.0 0.5 148312 5504 ? Ss 08:52 0:00 sshd: root@pts/1
root 1118 0.0 0.0 112680 984 pts/1 S+ 08:52 0:00 grep --color=auto sshd
[root@lynn-06 ~]# [root@lynn-04 expect]#
設置超時
在執行的命令下面加上一行
set timeout -1 #永不超時
set timeout 1 #1秒超時
set timeout 5 #5秒超時
例如:
expect "]*"
send "vmstat 1" #這個命令會一直執行
set timeout -1
expect "]*"
send "vmstat 1" #這個命令會5秒後自動停止
set timeout 5
自動同步文件
編寫腳本
內容如下:
[root@lynn-04 expect]# vim 4.expect
#!/usr/bin/expect
set passwd "6811327"
spawn rsync -av [email protected]:/tmp/12.txt /tmp/
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect eof
執行結果
[root@lynn-04 expect]# chmod a+x 4.expect ; ./4.expect
spawn rsync -av [email protected]:/tmp/12.txt /tmp/
[email protected]‘s password:
receiving incremental file list
12.txt
sent 30 bytes received 84 bytes 228.00 bytes/sec
total size is 5 speedup is 0.04
[root@lynn-04 expect]# cat /tmp/12.txt
1212
指定host和要同步的文件
編寫腳本5.expect
內容如下:
[root@lynn-04 expect]# vim 5.expect
#!/usr/bin/expect
set passwd "6811327"
set host [lindex $argv 0]
set file [lindex $argv 1]
spawn rsync -av $file root@$host:$file
expect {
"yes/no" { send "yes\r"}
"password:" { send "$passwd\r" }
}
expect eof
執行結果
[root@lynn-04 expect]# chmod a+x 5.expect ; ./5.expect 192.168.130.128 "/tmp/12.txt"
spawn rsync -av /tmp/12.txt [email protected]:/tmp/12.txt
[email protected]‘s password:
sending incremental file list
sent 31 bytes received 12 bytes 86.00 bytes/sec
total size is 5 speedup is 0.12
[root@lynn-04 expect]#
shell項目-分發系統-expect