linux下自动telnet到远程主机上运行的脚本
作者:手机用户2602922607 | 来源:互联网 | 2017-09-08 20:39
linux下自动telnet到远程主机上运行的脚本--Linux企业应用-Linux服务器应用信息,下面是详情阅读。
用例:自动测试系统,自动编译完成后,需要能够自动在终端上运行,终端仅支持串口和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 <&8 >&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
#=====================脚本结束===================
推荐阅读
-
本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ...
[详细]
蜡笔小新 2023-12-14 18:18:21
-
本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ...
[详细]
蜡笔小新 2023-12-13 11:35:40
-
-
本文介绍了Shell中for命令的基本格式和用法,通过提供一个值列表来迭代执行一系列命令。同时还介绍了如何读取列表中的值,并给出了for命令与其他命令的结合使用示例。 ...
[详细]
蜡笔小新 2023-12-12 12:24:14
-
本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ...
[详细]
蜡笔小新 2023-12-12 11:19:14
-
本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ...
[详细]
蜡笔小新 2023-12-12 03:02:49
-
本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ...
[详细]
蜡笔小新 2023-12-11 17:35:39
-
本文总结了Linux下多线程执行shell脚本的4种方法,包括切换到工作目录执行、使用绝对路径执行、直接使用bash或sh执行。同时介绍了为什么需要加上"./"来执行脚本的原因。 ...
[详细]
蜡笔小新 2023-12-11 16:34:22
-
蜡笔小新 2023-12-10 21:14:20
-
为什么80%的码农都做不了架构师?最近在工作中需要使用crontab执行定时任务,处理memcacheq消息队列里的数据,但是发现在 ...
[详细]
蜡笔小新 2023-12-09 18:43:51
-
本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ...
[详细]
蜡笔小新 2023-12-09 10:11:06
-
本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ...
[详细]
蜡笔小新 2023-12-09 05:31:17
-
1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ...
[详细]
蜡笔小新 2023-10-17 19:29:00
-
其实之前也有下载过完整的android源码,但是从来没有对这个做过一些总结,在加上最近需要经常去看,索性就在从新下载,编译一下,其实这些东西官网上面都有。http:sou ...
[详细]
蜡笔小新 2023-10-17 19:20:12
-
homemyUserscript.sh>>homemyUserlog.txt2>&1在script.sh ...
[详细]
蜡笔小新 2023-10-17 19:09:31
-
docker容器的数据管理一:数据卷实现数据的永久化,完全独立于容 ...
[详细]
蜡笔小新 2023-10-17 15:59:03
-
手机用户2602922607
这个家伙很懒,什么也没留下!