我最近遇到了一些服务器问题。 所以我只想留下一个窗口,显示连接设备的独特和IP。
我一直在使用:
watch -n 5 "netstat -tn 2>/dev/null | grep :80 | awk '{print $5}' | sed 's/.*::ffff://' | sort | uniq -c | sort -nr"
这没关系,但我有一个格式化问题,我无法解决,似乎是本地连接出现。
输出示例(截图)
没有管道的Netstat示例
混淆的原因是我正在使用awk '{print $5}'
仅打印第5列
我假设它是因为我试图使用带有点子的手表,而某些东西与另一个不同意。
任何人都可以建议对一个班轮进行调整, 或者任何人都可以建议另一个工具来监视与服务器的活动连接(对本地连接不感兴趣)
被修改 这是我现在正在使用的。 由于格式问题的数量,我决定反对Watch。
RED='\033[00;31m'
RESTORE='\033[0m'
YELLOW='\033[00;33m'
PURPLE='\033[00;35m'
LCYAN='\033[01;36m'
BLUE='\033[00;34m'
LIGHTGRAY='\033[00;37m'
while true
do
echo -e ${RED}"Connection Script"
echo -e ${YELLOW}"Current Active Connections to the Server Port 80"
netstat -tn 2>/dev/null | awk '/:80 / {print $5}' | sed 's/.*::ffff://' | sed 's/:.*//' | sort | uniq -c | sort -nr
echo -e ${RESTORE}
echo -e ${PURPLE}"FTP Connections: 21"
netstat -tn 2>/dev/null | awk '/:21 / {print $5}' | sed 's/.*::ffff://' | sed 's/:.*//' | sort | uniq -c | sort -nr
echo -e ${RESTORE}
echo -e ${LCYAN}"SSH/'SFTP' Connections: 22"
netstat -tn 2>/dev/null | awk '/:22 / {print $5}' | sed 's/.*::ffff://' | sed 's/:.*//' | sort | uniq -c | sort -nr
echo -e ${RESTORE}
echo -e ${RED}"Yellowfin Connections: 8181"
netstat -tn 2>/dev/null | awk '/:8181 / {print $5}' | sed 's/.*::ffff://' | sed 's/:.*//' | sort | uniq -c | sort -nr
echo -e ${RESTORE}
MySQLCon=$(netstat -tn 2>/dev/null | awk '/:3306 /' | sort | uniq -c | sort -nr | wc -l)
echo -e ${RESTORE}
echo -e $LIGHTGRAY"MySQL Active Connections on port 3306 =" $MySQLCon
echo -e ${RESTORE}
sleep 5
clear
done
我很欣赏这里提供的反馈,这是一个有趣的学习曲线 输出脚本示例:
由于IP特殊,部分图像已被涂黑;-)
答案 0 :(得分:1)
这个“奇怪的”输出有几件事情。
查看watch
声称它正在运行的命令。具体来看awk
脚本。看到它是awk '{print }'
?
那是因为你用双引号嵌入了整个命令,所以shell本身扩展$5
作为位置参数,它在awk
甚至运行之前消失,你最终打印出整行。
从管道中删除sed
,您会看到每条行都是输出中的整行。 (或者从管道中删除awk
,您将看到输出完全没有变化。)
某些行不完整的唯一原因是sed
在包含该行的行::ffff:
之前删除了所有内容。你会注意到,最后没有一条IPv4线路(这就是它们全部显示的原因)。因此,您甚至接近预期的输出这一事实是因为您双重覆盖“仅打印远程IP列”目标。
这也是为什么你在输出中得到状态列的原因(尽管没有表明你想要的那个)。
在命令中转义\$
以“修复”管道。
那说“不使用grep
和sed
”试试这个:
netstat -tn | awk '/:80 / {print $5}'
看看你想要的东西有多接近你。
这会在错误的列中与:80
匹配,因此如果您希望将其限制为Local Address
列,则可以使用$4 ~ /:80$/
而非/:80 /
来执行此操作。< / p>