expect批量执行交换机命令脚本

1[root@test-syslog-o script]# vi script.exp

#!/usr/bin/expect


set ip [lindex $argv 0]

spawn ssh -v -1 -c des -q -oStrictHostKeyChecking=no huan.yan@test.com@$ip

expect "*password:"

send "123456.Aa\r"

expect "*>"

send "sys\r"

expect "*]"

send "user-int consle 0\r"

send "set authentication password cipher1!2z\$9B\r" #这里的“\”代表转义

expect "*]"

send "quit\n"

send " port-group 1\r"

send " group-member Ethernet 0/0/1 toEthernet 0/0/46\r"

send " port link-type access\r"

send " port default vlan 10\r"

send " quit\n"

send " undo port-group 1\r"

send "quit\n"

send " sa\r"

send " \r"

send " y\r"

send " \r"

send "quit\n"

set timeout 10

expect eof

2.[root@test-syslog-o script]# vi loop.sh

#!/bin/sh

while read ip

do

expect script.exp $ip


done < ip.txt


3.[root@test-syslog-o script]# vi ip.txt

172.16.100.1

172.16.100.2

……

172.16.100.254


执行脚本[root@test-syslog-oscript]#sh loop.sh

以上以华为S5700为范例,其他型号交换机需替换相应命令。