有些时候,在面对开发机的时候,不断的telnet和不断的command自己的命令确实非常麻烦,需要一些自动测试或者自动部署的需求。然而面对telnet很多同学都跟我一样一开始觉得无法通过管道等传用户名和密码给telnet进行自动化执行。但其实还是有解决办法的,目前解决办法大致分一共有两种,一种是用第三方的expect这个命令,它可以交互式的根据终端返回的信息可以在你事先设定好的游戏规则之下进行命令,比如expect "Hello", send "Hello, too",表示当终端返回Hello的时候我就返回Hello,too,不然就用其中的set timeout进行超时等待。具体的用法同学可以参考相关细节,总之,expect绝对是服务器管理员的利器,如果你有空,确实可以抽空好好学习一下这个命令。但麻烦的就是它不是系统标配的,需要后期安装。
第二种方法比较简单,有些同学可能会跟我一样,想着兼容性方面,比如我这个脚本有可能会给我团队的队友一起使用,难道要求他们都去装expect吗?有没有简单的办法可以让shell来帮我们进行telnet并自动执行一些简单的命令呢?答案是有的,那就是利用管道,echo,telnet的三者结合,先看以下demo.
#!/bin/bash
#==============================================
# Author: Ricky.K
# Description: Auto telnet and run command
#==============================================
echo "My own command..." &&
(sleep ; echo "user"; \
sleep ; echo "password"; \
sleep ; echo "cd /usr/local"; \
sleep ; echo "./test.sh"; \
while [[ true ]]; do \
sleep ; \
done;) | telnet 192.168.1.1
可以看到,在输入完自己命令之后,可以通过小括号(用大括号需要注意左边第一个括号和第一个命令有一个空格)将命令包起来,这样整个的管道就是对其中各个命令的全部起作用,利用echo,将用户名,密码,以及你要输入的命令通过管道传给telnet,即实现了自动化的telnet脚本命令实现。同时需要注意,在最后一个命令(非sleep)之前,如果直接传给telnent,你会发现命令根本就没有执行完或者压根就没执行就被你断开链接了,这个时候你需要用while循环或者sleep一个比较大的值来让它有时间进行命令响应,这也是需要考虑的。
telnet自动化并没有我们想的这么复杂,用用简单命令一样可以实现这些功能,也反应了UNIX经典的设计哲学,通过管道和命令组装,你就拥有了世界上最好的武器。
自动Telnet远程登陆命令的更多相关文章
-
telnet远程登陆
这篇文章是第二次更新,内容为telnet远程登陆路由器,非常简单.直接进入正题,在网络配通的情况下,为路由器设置登陆密码和管理员密码,就可以通过pc机远程管理路由器或交换机. 目的: 网络拓扑图如下, ...
-
python实现Telnet远程登陆到设备并执行命令
#encoding=utf-8 import telnetlib import time def do_telnet(Host, username, password, finish, command ...
-
IP路由实验之---Telnet远程登陆
实验设备:一台华三路由器,一台PC 骤一,为路由器端口配置 IP 地址 <H3C>system-view #进入系统视图 [H3C] / #进入0/0端口 [H3C-Ethernet-/] ...
-
debian系统搭建telnet服务器以及telnet远程登陆--加油
1.安装软件 sudo apt-get install telnet* 2.创建telnet文件 vim /etc/xinetd.d/telnet telnet内容 1 service telnet ...
-
禁止root用户直接远程telnet/ssh登陆
AIX 封闭root,只能使用su登录root用户,禁止root用户直接远程登陆. 1. 禁止telnet登录 smit chuser ->root ->User can ...
-
mac 用密钥远程登陆
window远程登陆命令:mstsc A为本地主机(即用于控制其他主机的机器) ;B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110;A和B的系统都是Linux 在A ...
-
[转载]Ubuntu下ssh服务的安装与登陆(ssh远程登陆)
转载地址:http://blog.csdn.net/zht666/article/details/9340633 Ubuntu默认并没有安装ssh服务,如果通过ssh远程连接到Ubuntu,需要自己手 ...
-
Linux 远程登录命令telnet
一.telnet简介: telnet命令通常用来远程登录.telnet程序是基于TELNET协议的远程登录客户端程序.Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准 ...
-
在远程登陆的主机上通过命令行源码编译安装 GNU M4、autoconf、automake 等程序
由于实验需要,最近获得了一个实验室服务器的账号,平常主要通过 ssh 进行远程登陆进行实验.一方面,远程登录的机器只提供终端界面,一般只通过命令行进行任务操作:另一方面,由于是多人共享服务器,故而个人 ...
随机推荐
-
c#.net常用字符串函数 字符串常用方法
RegionsStr = RegionsStr.Remove(RegionsStr.LastIndexOf(","), 1); //去掉最后一个逗号 Compare 比较字符串 ...
-
ORA-07217: sltln: environment variable cannot be evaluated及RMAN-06059
备份脚本: RMAN> run { allocate channel c1 device type disk format '$BACKUP_HOME/level0/level0_%d_%s_% ...
-
jq的事件冒泡
在页面上可以有多个事件,也可以多个元素响应同一件事, 事件冒泡引发的问题: 有些时候不想动用的事件,却因为事件冒泡而触发 解决问题: 1.事件对象 由于IE-DOM和标准的DOM实现事件对象的方法各不 ...
-
Ubuntu 安装wireshark
参考:ubuntu下安装wireshark 依赖及相关包的安装 1.编译工具 apt-get install build-essential 2.GTK+的开发文件和GLib库(libraries) ...
-
DirectSound---3D环境
DirectSound对于单声道的Wav文件(或者说对于单声道的PCM音频数据)提供了内置3D音效的模拟,你能够控制每一个声源和收听者的立体位置,对移动的物体应用多普勒效果等等.在单个应用程序中,可以 ...
-
ko.js学习一
一.KO是一个MVVM框架 声明式绑定 (Declarative Bindings):使用简明易读的语法很容易地将模型(model)数据关联到DOM元素上. UI界面自动刷新 (Automatic U ...
-
vue+vuex+axios实现登录、注册页权限拦截
1.修改config文件夹里的dev.env.js里的BASE_API,把地址改成请求后端的公共部分 1 BASE_API: '"http://192.168.xx.xx"', 2 ...
-
发布逸出 java this 逸出【转】
转自:http://blog.csdn.net/joker_zhou/article/details/7322801 (1)发布:发布是指将一个对象,使其引用储存到一个其他代码可以访问到的地方,在一个 ...
-
【SpringData学习】
1.注解@Modifying 在springData中,大部分给出的接口都是查询的,那要进行删除和更新的时候,大部分都需要使用@Query 进行手写代码.并且需要使用@Modifying注解. 使用场 ...
-
SpringBoot入门(0) HelloWorld的实现与原理分析
SpringBoot(0) HelloWorld的实现与原理分析 一.环境准备 1.1 环境约束 –jdk1.8:Spring Boot 推荐jdk1.7及以上:java version “1.8.0 ...