一个用expect批量登陆主机执行命令的脚本

  
  
  
  
  1. 主机文件如下: 
  2.  
  3. host.txt 
  4.  
  5. 192.168.10.1   host1 
  6.  
  7. 192.168.10.2   host2 
  8.  
  9. 192.168.10.3   host3 
  10.  
  11. 192.168.10.4   host4 
  12.  
  13. 192.168.10.5   host5 
  14.  
  15.  
  16. expect 脚本如下 
  17.  
  18. # login.exp 
  19.  
  20. #!/usr/bin/expect -f 
  21.  
  22. set ipaddress [lindex $argv 0] 
  23.  
  24. set password [lindex $argv 1] 
  25.  
  26. set CMD [lindex $argv 2] 
  27.  
  28. spawn ssh $ipaddress $CMD 
  29.  
  30. expect "(yes/no)"{ 
  31.  
  32.     send "yes\r" 
  33.  
  34.     expect "password:" 
  35.  
  36.     send "$password\r" 
  37.  
  38.     } 
  39.  
  40.     "password:" {send "$password\r"} 
  41.  
  42.     "*host" {exit 1} 
  43.  
  44. expect eof 
  45.  
  46.  
  47. 批量执行脚本如下(打印出所有的主机名): 
  48.  
  49. #!/bin/bash 
  50.  
  51. for i in $(awk -F\  '{print $1}' host.txt) 
  52.  
  53. do 
  54.  
  55. ./login.exp $i test1 hostname 
  56.  
  57. done 

 

你可能感兴趣的:(职场,expect,登陆,休闲)