自动telnet的脚本

自动telnet的脚本

#===========autotelnet.sh==============
#!/bin/bash

tmptty=`tty`                 #取得当前的tty值
tmptty=`basename $tmptty`    #去掉tty的绝对路径
tmpname=`whoami`             #取得当前执行程序的用户名
ip="10.22.33.44"             #目标主机地址
inp1="ABC^M"                 #主机的用户名,注意^M必须在UNIX下重装用以下方法输入才能用!!
                             #方法为按住ctrl键按v键,不放ctrl键,再按shift键和m键,完成后全部放开
inp2="ABC^M"                 #主机的密码,注意必须有^M
inp3="ls^M"                  #其他进入后的命令,可无或用ls之类的命令代替,注意必须有^M
inp4="pwd^M"                 #命令4,同上
#--------------------------

inputfile=in                 #导入文件管道用的,不要改,这个值没有任何关系
outputfile=out.log           #最终导出的文件
rm -fr $inputfile
rm -fr $outputfile
mknod $inputfile p
touch $outputfile

#file description 7 for out and 8 for in 使用7作为输入管道,8作为输入
exec 7<>$outputfile
exec 8<>$inputfile

telnet $ip <&8 >&7 &

sleep 2; echo $inp1 >> $inputfile      #看得懂吧
sleep 2; echo $inp2 >> $inputfile  
sleep 2; echo $inp3 >> $inputfile      #如果没有其他命令,这行和下一行可以去掉
sleep 2; echo $inp4 >> $inputfile

tail -f $outputfile &        强制在屏幕上显示任何输入输出

while true                   #正常情况下已经进入目标主机了,可以输入任何命令,所有的一切输入输出都会被记录
do
  read str
  if [[ $str = "quit" || $str = "exit" ]]
  then echo $str >> $inputfile  exit
  else echo $str >> $inputfile
  fi
done

#退出时自动杀掉相关进程
ps -ef | grep telnet | grep -v grep | grep -v telnetd | grep $tmptty | grep $tmpname | awk '{print " kill -9", $2}' | sh
ps -ef | grep tail | grep -v grep | grep -v telnetd | grep $tmptty | grep $tmpname | awk '{print " kill -9", $2}' | sh
网上搜到这个脚本,运行的时候有命令未找到的错误,好像是附值语句的问题。shell的脚本可以这样直接附值得么      
不用呃麽麻?啦;
( sleep $sec
echo "passwd"
sleep $sec
) | telnet IP
就可以了      
不行的啊,行不通啊      
( sleep $sec
echo "passwd"
sleep $sec
) | telnet IP

?量你要先嬴值回者用?值代替,$sec=秒?
复制内容到剪贴板
代码:
( sleep 10
echo "passwd"
sleep 10
) | telnet 10.1.1.1