(2)端口的扫描,nc可以作为client发起TCP或UDP连接
(3)机器之间传输文件
(4)机器之间网络测速

学习这个东西的缘故原由是由于朋友须要对多达几百个IP进行端口检测,然后讯问我能不能写脚本实现,一开始我没考虑太多,直接开始写,脚本内容如下:
#!/bin/bash##NC检测if [ -f "/usr/bin/nc" ];then echo '开始检测'else if [ ! -f "/usr/bin/apt" ];then apt-get install -y nc else if [ -f "/usr/bin/dnf" ];then dnf install -y nc else if [ -f "/usr/bin/yum" ];then yum install -y nc else echo "请自己安装nc"exit 11 fi fi fifirm -f disables.txt ips.txtread -p "请输入IP列表文件路径" Fileif [[ -f "$File" ]];then echo -e "正在获取IP列表"else echo "找不到这个文件" exit 22firead -p "请输入端口,多个请利用空格分开" Dropips=`cat $File | wc -l`echo "一共有 ${ips}"for((i=1;i<=${ips};i++));do ip=`cat $File | awk "NR==$i{print }"` echo -e "正在检测${ip}" for d in $Drop;do services="$ip $d" nc -v -z $services if [[ "$?" == "0" ]];then echo -e "$services" >> ips.txt else echo "$services" >> disables.txt fi donedoneecho "开启的IP列表在 ips.txt"echo "没有开启的IP列表在disables.txt"
写完创造虽然能实现检测,但是效率太低了,于是就想到Python的多线程处理,然后就去百度一下Shell的多线程,结果真的有方法实现“多线程”,下面开始安排多线程检测IP通讯的脚本。
3.2、命令后台运行+wait命令办法实现“多线程”下面这个脚本中不对NC进行检测#!/bin/bashrm -f ips.txt disables.txtread -p "请输入IP列表文件路径" Fileif [[ -f "$File" ]];then echo -e "正在获取IP列表"else echo "找不到这个文件" exit 22fi##统计文件行数(IP数量)ips=`cat $File | wc -l`echo -e "当前文件存在${ips}个IP地址"##逐行读取for((i=1;i<=${ips};i++));do { ip=`cat $File | awk "NR==$i{print }"` sleep 5 ping $ip -c 5 >/dev/null if [[ "$?" == "0" ]];then echo -e "$ip" >> ips.txt else echo "$ip" >> disables.txt fi } &donewaitconnects=`cat ips.txt | wc -l`disconnects=`cat disables.txt | wc -l`echo -e "完成\n存活IP已记录到: ips.txt\n未利用[也可能禁PING]的已记录到:disables.txt"echo "当前可PING通的IP有: ${connects}"echo "当前不可PING通的IP有: ${disconnects}"
实行效果:
Shell多线程运用处景不是很广,而且场景繁芜的情形下还可能会涌现数据冲突的情形,以是如果须要在繁芜下利用多线程,还是选择Python等更专业的措辞吧