专栏首页杨建荣的学习笔记Linux命令ping,nc的学习(r10笔记第20天)

Linux命令ping,nc的学习(r10笔记第20天)

今天看了下《Linux大棚命令百篇》网络和系统篇,发现了几个很不错的命令,我是看着目录然后根据自己的需要选了3个命令,没想到3个命令都让人眼前一亮,刷新了我原本的认知。 首先第一个命令还是老生常谈的ping 传统的ping就是下面的样子,这个也是我们熟悉的ping # ping 10.127.133.96 PING 10.127.133.96 (10.127.133.96) 56(84) bytes of data. 64 bytes from 10.127.133.96: icmp_seq=1 ttl=63 time=0.230 ms 64 bytes from 10.127.133.96: icmp_seq=2 ttl=63 time=0.216 ms ... 当然Linux下的ping必须制定次数,我们可以指定次数,使用-c选项,然后会得到一个统计结果,可能对于很多人来说,需要关注的就是最后的统计结果,那么ping也可以实现。 # ping -c 3 10.127.133.96 PING 10.127.133.96 (10.127.133.96) 56(84) bytes of data. 64 bytes from 10.127.133.96: icmp_seq=1 ttl=63 time=0.205 ms 64 bytes from 10.127.133.96: icmp_seq=2 ttl=63 time=0.233 ms 64 bytes from 10.127.133.96: icmp_seq=3 ttl=63 time=0.240 ms --- 10.127.133.96 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1999ms rtt min/avg/max/mdev = 0.205/0.226/0.240/0.015 ms 我们使用-q选项来就可以直接得到统计结果。 # ping -c 3 -q 10.127.133.96 PING 10.127.133.96 (10.127.133.96) 56(84) bytes of data. --- 10.127.133.96 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2000ms rtt min/avg/max/mdev = 0.208/0.219/0.237/0.017 ms 如果想根据数据包的大小来测试网络情况,ping也可以支持,那就是-s选项 # ping -c 3 -q -s 65507 10.127.133.96 PING 10.127.133.96 (10.127.133.96) 65507(65535) bytes of data. --- 10.127.133.96 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2005ms rtt min/avg/max/mdev = 1.424/1.468/1.501/0.032 ms 当然此处我指定为65507也是有一定的意味,最大的数据包是65507 # ping -c 3 -q -s 65535 10.127.133.96 Error: packet size 65535 is too large. Maximum is 65507 而对于发送间隔,可以指定频度,也就意味着可以使用-i的选项显式的指定发送间隔或者使用-f选项尽可能快的发送数据包。 比如我们显式指定发送间隔为2秒,则可以使用下面的方式: # ping -c 3 -q -s 65507 -i 2 10.127.133.96 PING 10.127.133.96 (10.127.133.96) 65507(65535) bytes of data. --- 10.127.133.96 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 4007ms rtt min/avg/max/mdev = 1.404/1.443/1.468/0.041 ms 如果希望尽可能快的发送,也就是知名的flood ping # ping -c 3 -q -s 65507 -f 10.127.133.96 PING 10.127.133.96 (10.127.133.96) 65507(65535) bytes of data. --- 10.127.133.96 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 4ms rtt min/avg/max/mdev = 1.368/1.400/1.445/0.044 ms, ipg/ewma 2.380/1.429 ms 然后是轻巧的nc命令 这个命令在我解决tnsping超时的场景中收益良多,没想到自己虽然发现它很有意思,但是没有发现它的功能竟然还有很多,一定要好好掌握。 首先第一个就是可以简单模拟一个聊天窗口, 可以开启两个窗口,就是两个聊天窗口了,很类似Java编程中的socket通信。 服务器端开通端口,客户端连接指定的服务器IP和端口,就可以互相通信了。 服务器端开启服务,开通端口12345 nc -l 12345 然后客户端发起连接请求。 nc 10.127.133.86 12345 然后两端发送的消息就可以正常接收了。当然我测试了一下,如果是两个窗口之间的数据通信是没有问题的,如果是3个,最新的那个就会被忽略了。 当然nc的特长就是探测网络,一个亮点就是可以指定端口范围来扫描。 比如探测10.127.133.96的端口20-25的情况,可以使用如下的命令, -n是指定使用IP的方式,-w是指定超时时间,-z是建立连接后立即断开,不发送数据包 # nc -z -v -n -w 2 10.127.133.96 20-25 nc: connect to 10.127.133.96 port 20 (tcp) failed: Connection refused nc: connect to 10.127.133.96 port 21 (tcp) failed: Connection refused Connection to 10.127.133.96 22 port [tcp/*] succeeded! nc: connect to 10.127.133.96 port 23 (tcp) failed: Connection refused nc: connect to 10.127.133.96 port 24 (tcp) failed: Connection refused nc: connect to 10.127.133.96 port 25 (tcp) failed: Connection refused 最让我感觉nc强大的地方就是文件传输了,和scp,ftp等的亮点在于,nc传输文件竟然不需要输入用户名密码 一个简单的文件传输的例子如下,比如我们要传输的文件为test.sh,服务端IP为10.127.133.86,客户端IP为10.127.133.96 服务端的test.sh文件需要传送到客户端10.127.133.96去。 服务端这样设置: # nc -v -l 12345 < test.sh 客户端接受test.sh文件,则使用如下的方式接收。 # nc -v -n 10.127.133.86 12345 > test.sh 命令运行之后,服务端开始推送,生成的日志如下: # nc -v -l 12345 < test.sh Connection from 10.127.133.96 port 12345 [tcp/italk] accepted 当然反过来可以,服务端接收客户端的文件test.sh,服务端设置为: nc -v -l 12345 > test.sh,客户端设置为:nc -n 10.127.133.86 12345 <test.sh 如果发送文件夹,nc借助管道也可以实现 服务器端发送文件夹 dbm_lite,压缩 # tar -cvPf - /U01/yangjr/test/dbm_lite |nc -l 12345 /U01/yangjr/test/dbm_lite/ /U01/yangjr/test/dbm_lite/bpm.sql /U01/yangjr/test/dbm_lite/showgraph/ 客户端接收文件夹,解压 $ nc -n 10.127.133.86 12345|tar -xvPf -

本文分享自微信公众号 - 杨建荣的学习笔记(jianrong-notes),作者:杨建荣

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-09-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用pt工具检测MySQL主从延迟(r12笔记第7天)

    今天翻看了下《高性能MySQL》,真是让人拍手称绝,里面的很多实战思路非常不错,各种问题分析如数家珍,如果是有一定基础的同学,看起来会非常不错。 当然里...

    jeanron100
  • 关于数据库中的一些name(r3笔记第64天)

    如果接触数据库有些时间了,可能会碰到很多关于数据库相关的名字,比如ORACLE_SID,db_name,instance_name,db_unique_name...

    jeanron100
  • 当Python字符串遇上MySQL

    学习的时候我喜欢对比,MySQL和Oracle比,Python和MySQL比,总能有一些收获,也有了新的理解。 今天整理这部分内容的时候,我发现Python和...

    jeanron100
  • Kafka protocol 版本适应的通信协议

    在Kafka客户端与服务端通信的过程中,为了正确地发出、读取不同命令,需要定义通信的格式。org.apache.kafka.common.protocol包就负...

    平凡的学生族
  • spring cloud笔记 oauth2授权服务 clientDetails配置源码

    路过君
  • IBM陈黎明:Watson今年底将惠及10亿人,商业AI如何渗透这些行业?

    【新智元导读】 4月11日,IBM公司在北京举行2017 IBM中国论坛,提出主题“天工开物,人机同行”。下午新智元对IBM大中华区总裁陈黎明进行了访问,探讨W...

    新智元
  • Unity3d EasyAR开发案例系列教程

    http://forum.easyar.cn/portal.php?mod=view&aid=2

    恬静的小魔龙
  • PKW: flask 接收请求参数 + pandas groupby 实用(第 2 期)

    ”有时候就是要经历一些糟糕的事情才能意识到世间存在的美丽。 Sometimes it takes going through something so awfu...

    周萝卜
  • 现代后端开发者必备技能——2018 版

    今天的Web开发与几年前完全不同,有很多不同的东西可以很容易地阻止任何人进入Web开发。这是我们决定制作这些循序渐进的视觉指南的原因之一,这些指南展示了更大的图...

    程序员宝库
  • AlphaGo Zero 初探

    Deepmind 最近发布了 AlphaGo 的最新版本 AlphaGo Zero 的论文,AlphaGo 不再需要学习人类的经验,而是可以自己学习如何下围棋...

    杨熹

扫码关注云+社区

领取腾讯云代金券