Linux命令ping,nc的学习

今天看了下《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 -
    

时间: 2024-10-04 00:07:06

Linux命令ping,nc的学习的相关文章

29个你必须知道的Linux命令

虽然Linux发行版支持各种各样的饿GUI(graphical user interfaces),但在某些情况下,Linux的命令行接口(bash)仍然是简单快速的.Bash和 Linux Shell 需要输入命令来完成任务,因而被称为 命令行 接口. 命令是计算机执行任务的指令.可以使用命令去关闭计算机,或者列出当前目录的文件列表,或当前文本的内容,或者屏幕显示一条消息. 如果你是一个新手,并尝试使用命令行接口,我们收集了各种基本的Linux命令来供你学习,帮你在各种Linux发行版中完成各种

linux命令学习之10个网络命令和监控命令_linux shell

网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslookup, traceroute, finger, telnet, ethtool 用于查看linux服务器ip地址,管理服务器网络配置 ,通过 telnet 和ethernet建立与linux之间的网络链接,查看linux的服务器信息等.下面让我们看看在linux下的网络和监控命令的使用.1. hostname 复制代码 代码如下: hostname 没有选项,显示主机

Linux命令学习总结之rm命令_Linux

命令简介: rm命令用来删除Linux系统中的文件或目录.通常情况下rm不会删除目录,你必须通过指定参数-r或-R来删除目录.另外rm通常可以将该文件或目录恢复(注意,rm删除文件其实只是将指向数据块的索引点(information nodes)释放,只要不被覆盖,数据其实还在硬盘上.如果想要保证文件的内容无法复原,可以使用命令shred . 另外一般还是要慎用rm -rf *这样的命令. 执行权限 :All User 指令所在路径:/bin/rm 命令语法: rm [OPTION]... FI

Linux命令学习总结:详解shutdown命令_Linux

本文讲诉了Linux命令学习总结:shutdown命令,具体如下: 命令简介:  该命令可以安全关闭或者重新启动系统.你没有看错,shutdown命令不仅可以关闭系统.也可以重启Linux系统.   命令语法: /sbin/shutdown [-t sec] [-arkhncfFHP] time [warning-message] 命令参数: 参数 长参数 描叙 -a Use /etc/shutdown.allow. -c 中断关机:当执行"shutdown -h 12:00"指令时,

LINUX命令:TAIL,GREP学习笔记

今天来学习两个Linux命令:tail和grep. tail命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,常用来跟踪系统日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容. tail命令参数: -f 循环读取 -q 不显示处理信息 -v 显示详细的处理信息 -c<数目> 显示的字节数 -n<行数> 显示行数 –pid=PID 与-f合用,表示在进程ID,PI

Java服务化系统线上应急和技术攻关,你必须掌握的Linux命令

上一篇文章<Java服务化系统线上应急和技术攻关,你必须拥有的那些应用层脚本和Java虚拟机命令>介绍了笔者在互联网公司里线上应急和技术攻关过程中积累的应用层脚本和Java虚拟机命令,这些脚本和命令在发现问题和定位问题的过程中起到关键作用,然而,经常会遇到一些深层次的问题,仅仅通过应用层和JVM虚拟机层的信息无法定位问题和解决问题,这时需要深入研究系统级的各种参数和信息,才能确定问题的根源原因,例如:网络超时.机器负载过高.JVM OOM.JVM和内核Bug等,这篇文章介绍那些重要的Linux

自己工作常用的linux命令:tail 命令

TAIL 命令从指定点开始将文件写到标准输出.使用TAIL命令的-F选项可以方便的查阅正在改变的日志文件, TAIL -F FILENAME会把FILENAME里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容. 1.命令格式; tail[必要参数][选择参数][文件]    2.命令功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理.常用查看日志文件. 3.命令参数: -f 循环读取 -q 不显示处理信息 -v 显示详细的处理信息 -c<数目> 显示的字节数

Linux 命令大全

来源:http://www.runoob.com/linux/linux-command-manual.html Linux 命令大全 Linux 命令大全 1.文件管理 cat chattr chgrp chmod chown cksum cmp diff diffstat file find git gitview indent cut ln less locate lsattr mattrib mc mdel mdir mktemp more mmove mread mren mtools

Java 程序员应会的 Linux 命令

Java 程序员应会的 Linux 命令 作为一个Java开发人员,有些常用的Linux命令必须掌握.即时平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令.因为很多服务器上都是Linux系统.所以,要和服务器机器交互,就要通过shell命令. 本文并不会对所有命令进行详细讲解,只给出常见用法和解释.具体用法可以使用--help查看帮助或者直接通过google搜索学习. 1.查找文件 find / -name filename.txt 根据名称查找/目录下的f