telnet小脚本

Shell学习之运维用的telnet小脚本

白羊IT关注0人评论1469人阅读2017-11-30 21:56:37

生活中经常遇到的一件事情我想是,领导给你一堆IP,让你去telnet测试下网络连通性,这时候你就需要写一个shell小脚本去高效的执行了。以下是我在生产环境上试验过的,不一定是最优的代码,当我想应该也够用了。

共有两种情况:
第一种情况是每个IP的端口都不固定

IPs_Port.txt 存放的文件是
192.168.1.1 4949
192.168.2.3 9090
cat IPs_Port.txt | while read line  #这里只有存放在文件里面 while才能逐行读取,如果直接写成列表,那读取出来就一排。这个可以自己试验下或者用我的代码直接执行试验
do
(sleep 1) | telnet $line >> telnet_result.txt
done
cat telnet_result.txt | grep "Connected to" | awk -F " " ‘{print $3}‘ | cut -d ‘.‘ 1,2,3,4 > telnet_alive.txt   #注意cut的强大功能
cat IPs_Port.txt | awk -F " " ‘{print $2}‘ > IPS.txt
cat IPS.txt telnet_alive.txt | sort | uniq -u > telnet_die.txt  #去重,导入telnet_die.txt,最后查看这个文件,就是失败的IP

附:验证
A=’
192.168.1.1 4949
192.168.2.3 9090

echo $A | while read line 
do
echo $line
done

cut介绍:
cut 按列切分文件,你可以指定分隔每列的定界符。在cut的术语中,每列都是一个字段,就是有时候说第一列,可能表述称第一个字段。
实战:
假设有文件data.txt,格式如下
NO Name Mark Percent 
1 Sarath 45 90 
2 Alex 49 98 
3 Anu 45 90

分隔符(定界符)为Tab 制表符
如果我要取得第二列,所有人的名称,有什么好的办法吗?此时cut该大显身手了。
1. 取得2,3列 即name,和mark

cut –f 2,3 data.txt
2. 取得除第3列以外所有列
$cut –f3 –complement data.txt
3. 采取其他定界符,可以用-d改变。
假设data_comma.txt:
NO,Name,Mark,Percent 
1,Sarath,45,90 
2,Alex,49,98 
3,Anu,45,90 
则:
cut –f2 -d"," data_comma.txt

用法:cut [选项]... [文件]... 
从每个文件中输出指定部分到标准输出。
长选项必须使用的参数对于短选项时也是必需使用的。 
-b, --bytes=列表 只选中指定的这些字节 
-c, --characters=列表 只选中指定的这些字符 
-d, --delimiter=分界符 使用指定分界符代替制表符作为区域分界 
-f, --fields=列表 只选中指定的这些域;并打印所有不包含分界符的 
行,除非-s 选项被指定 
-n (忽略) 
--complement 补全选中的字节、字符或域 
-s, --only-delimited 不打印没有包含分界符的行 
--output-delimiter=字符串 使用指定的字符串作为输出分界符,默认采用输入 
的分界符 
--help 显示此帮助信息并退出 
--version 显示版本信息并退出

仅使用f -b, -c 或-f 中的一个。每一个列表都是专门为一个类别作出的,或者您可以用逗号隔 
开要同时显示的不同类别。您的输入顺序将作为读取顺序,每个仅能输入一次。 
每种参数格式表示范围如下: 
N 从第1 个开始数的第N 个字节、字符或域 
N- 从第N 个开始到所在行结束的所有字符、字节或域 
N-M 从第N 个开始到第M 个之间(包括第M 个)的所有字符、字节或域 
-M 从第1 个开始到第M 个之间(包括第M 个)的所有字符、字节或域

当没有文件参数,或者文件不存在时,从标准输入读取
解读:
1.取得某一列的字符或者字节 可以用-c, -b等
2.可以取得某个范围
1和2综合例子:
有文件range_data.txt,内容如下
abcdefghijklmnopqrstuvwxyz 
abcdefghijklmnopqrstuvwxyz 
abcdefghijklmnopqrstuvwxyz 
abcdefghijklmnopqrstuvwxyz 
运行:$cut range_data.txt -c-2
打印字符1-2列
再复杂一点:
$cut range_data.txt -c1-3,6-9 --output-delimiter ","
打印1-3行,6-9行,并且用逗号分隔。

分开解释

>cat telnet_result.txt | grep "Connected to"   #过滤telnet通的地址,你发现没有,这个结果IP后面有个点。我们先把IP取出来
Connected to 192.168.1.1.
>cat telnet_result.txt | grep "Connected to" | awk -F " " ‘{print $3}‘  #awk取出来 IP
192.168.1.1.
>cat telnet_result.txt | grep "Connected to" | awk -F " " ‘{print $3}‘ | cut -d ‘.‘ 1,2,3,4  #这时候用强大的cut 把最后一个点去掉。  为什么非要去掉这个点呢,因为下面我们要做文件比较,去重有这个点的话,默认是不重复的。(机器比较笨,所以你的把这个点去掉。)
192.168.1.1


第二种固定的端口方式:以下用8080端口举例,只写部分。

PORT=8080
count=0
for i in (cat )
do
    ((count++))  #累加
    #echo "count=$count"
    (sleep 1) | telnet $i $PORT > telnet_result.txt
done

转自https://blog.51cto.com/000011211684/2046239

原文地址:https://www.cnblogs.com/kjlysx/p/11414717.html

时间: 2024-08-10 10:26:09

telnet小脚本的相关文章

百度搜索小脚本

最近在提高自己编程能力,拿一些现实的小脚本练下.该脚本为python语言,主要涉及模块urllib,和正则表达式. 功能:输入要查询的关键字,和查询条数,会返回关键字的百度搜索结果的url和条数,一次最多查50条. import urllib.request import urllib.parse import re while True: x = input("请输入需要搜索的关键字(输入"q!"退出程序):") if x == 'q!': print('bye!

一个根据内存使用情况重启tomcat的小脚本

有一台服务器上部署了tomcat,随着时间的推移,内存消耗越来越大,所以写了一个小脚本配合crontab定时检测内存,不足的情况下重启tomcat. #!/bin/bash #tomcat restart:out of memory LOG=./restart_tomcat.log TOMCAT=/tomcat/bin/ TOMCATDIR=/tomcat echo"----------------------------" >> $LOG mem_total=$(free

一个计算的小脚本

[[email protected] cailu]# cat urfile 1 a2 b3 a1 d[[email protected] cailu]# awk '{a[$1]=a[$1]?a[$1]OFS$2:$2}END{for(i in a)print i,a[i]}' urfile 1 a d2 b3 a 一个计算的小脚本,布布扣,bubuko.com

写一个php小脚本辅助渗透测试

因为一个注入要爬行一些数据,然后写的一个小脚本,能写脚本来辅助渗透,也算是里程碑.哈哈哈 <?php $num = 1; while ($num <= 39) { $web_url = "http://www.xxx.com/shownews.asp?id=626%0AUNION%0ASELECT%0Atop%0A1%0A1,user_username,3,user_password,5,6%0Afrom%0A(select%0Atop%0A1%0Auser_username,use

小脚本标签的应用

<%@include  %> 示例:在a.jsp中,有小脚本 <%@include file="/b.jsp"  %> 代表翻译阶段a和b翻译成同一个文件,小脚本的方法都在servers文件里,如果a.jsp和b.jsp都用jsp高级模板的话,都有basePath, 运行a.jsp,会和b.jsp翻译成同一个文件,会有两个路径,就会出现路径重复的错误

【工作中的Python】随机点名小脚本

背景:项目组每周的例会中,有一项固定内容就是技术分享,可以是与工作相关或无关的任何技术主题.进行技术分享讲解的同学是随机抽签的.由此做了一个Python的小脚本用于抽取姓名. 脚本内容如下: #!/usr/bin/python import os import sys import tty, termios import random name_list = ["member_1","member_2","member_3"] input = '

用Python实现一个爬取XX大学电费通知的小脚本

内容简要 1分析网站 2简单爬取 3进阶自定义爬取 4保存进数据库 学校基础设施太差,宿舍电量过低提醒虽然贴在楼下,但是作为低头一族,经常忘记看提醒导致宿舍酣战时突然黑屏,为了避免这种尴尬的场景以及强化PY学习,我决定制作一个简单的爬虫. 首先我通过学校的微信公众号找到了一个十分隐蔽的查低电量提醒网站.它的界面是这样的: 手机适应的页面当然在电脑上会有一些崩=.=,但是不要介意,我们要的是功能.下面是查询到的界面 虽然看起来low而且经常不更新,但是它至少能用.于是我决定用它来制作低电量提醒查询

查看Linux服务器网卡流量小脚本shell和Python各一例

有时我们需要较为实时的查看服务器上的网卡流量,这里我写了两个小脚本,一个用shell(先写的,一次只能查看一个网卡),另一个用Python(后写的,一次可查看多个网卡).脚本中都用了while true"死循环",每隔10s从"/proc/net/dev"中取一次值并根据10s内的差值计算10s内的平均带宽:按ctrl+c停止执行.脚本兼容centos6和7 两个脚本都不太复杂,而且脚本中注释也比较细致,所以我就不过多解释脚本内容了.直接上图上脚本: shell版-

初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助

初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: 1 var fs = require('fs'); 2 var tel = [ 3 "1/2/4/6/a.tpl.html", 4 "1/2/4/7/9/c.tpl.html", 5 "1/3/5/8/b.tpl.html"]; 6 var demo = function (mulu)