linux telnet脚本,Linux下自动telnet到远程主机上运行的脚本

用例:自动测试系统,自动编译完成后,需要能够自动在终端上运行,终端仅支持串口和telnet控制,其中telnet是比较理想的选择,只需要telnet过去后,自动完成交互的过程即可。

方案:后台运行telnet,将标准输入重定向到管道,然后往管道中发交互命令。(管道的相关内容抽空看一下,必要的时候补篇文章)

补充:虽然到的本例直接用shell脚本完成,但感觉主要内容在于telnet后台运行及管道,如有必要使用其它脚本比如最近在玩的lua等也可以实现,当然了,需要用到一些exec。

脚本:

#===========autotelnet.sh==============

#!/bin/bash

tmptty=`tty` #取得当前的tty值

tmptty=`basename $tmptty` #去掉tty的绝对路径

tmpname=`whoami` #取得当前执行程序的用户名

ip="10.22.33.44" #目标主机地址

inp1="ABC^M" #主机的用户名,注意^M必须在UNIX下用以下方法输入才能用!!(VI下测试OK)

#方法为按住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 &7 &

sleep 2; echo $inp1 >> $inputfile #等2秒,然后把inp1,也就是用户名+回车换行输入到输入管道

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

#=====================脚本结束===================0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值