- 论坛徽章:
- 0
|
谢谢各位解答,我说的太简略了,我就举个例子吧:
while read wb_ip; #在param里得到第一个交换机的ip地址个密码
do
##
ip=`cat param |grep "$wb_ip" |awk '{ print $1 }'`
inp1=`cat param |grep "$wb_ip" |awk '{ print $2 }'`
inp2=`cat param |grep "$wb_ip" |awk '{ print $3 }'`
inputfile=in
outputfile=out
rm -fr $inputfile
rm -fr $outputfile
mknod $inputfile p
touch $outputfile
#file description 7 for out and 8 for in
exec 7<>$outputfile
exec 8<>$inputfile
telnet $ip <&8 >&7 &
sleep 1; echo $inp1 >> $inputfile
tail -f $outputfile &
sleep 1; echo su >> $inputfile
sleep 1; echo $inp2 >> $inputfile
sleep 1; echo sys >>$inputfile
while read cmd; #开始执行循环得到某个交换机的命令
do
sleep 1; echo $cmd >> $inputfile;
done < $ip
sleep 1; echo quit >> $inputfile;
sleep 1; echo quit >> $inputfile;
sleep 1; echo quit >> $inputfile;
sleep 1; exit
##
done <param
我的目的是telnet到各个交换机上执行命令后退出.
以上代码除了外层的while read wb_ip循环,里面的代码(两个##之间)都可以正确执行,
(这段代码其实就是各位高手提供的利用管道等技术实现自动telnet)
但是加上外层循环
while read wb_ip;
do
done <param
只执行一次.
这个外层代码是执行各个交换机的循环. 是不是里面的代码影响的?
----------------------------------------------------------------
以下为参数文件: param.txt存的是交换机的 ip地址和密码.
其他为各个交换机的命令参数文件(实际有20多个交换机).
############# param.txt ###############
10.10.10.1 passwd1 passwd2
10.10.10.2 passwd1 passwd2
10.10.10.3 passwd1 passwd2
....
....
#######################################
############# 10.10.10.1#################
sh run
sh proc cpu
sh proc mem
....
....
##############################################
############# 10.10.10.2#################
dis cu
dis proc cpu
dis proc mem
....
....
##############################################
############# 10.10.10.3#################
sh mod
sh port
sh int vlan
....
....
############################################## |
|