大家好

我正在编写一个脚本,用于定期监视与端口(在本例中为80)的连接。

我写了这个简短的脚本。

echo '=================================';a=`sudo lsof -i :80`;echo $a | awk '{print $1," ",$2," ",$3," ",$8}'; b=`echo $a | wc -l`; b=$(($b - 1));echo Total SSH Connections: $b;echo '================================='

输出为:
=================================
COMMAND   PID   USER   NODE
acwebseca   90   root   TCP
acwebseca   90   root   TCP
acwebseca   90   root   TCP
acwebseca   90   root   TCP
acwebseca   90   root   TCP
acwebseca   90   root   TCP
acwebseca   90   root   TCP
acwebseca   90   root   TCP
acwebseca   90   root   TCP
acwebseca   90   root   TCP
acwebseca   90   root   TCP
acwebseca   90   root   TCP
acwebseca   90   root   TCP
acwebseca   90   root   TCP
acwebseca   90   root   TCP
acwebseca   90   root   TCP
acwebseca   90   root   TCP
acwebseca   90   root   TCP
acwebseca   90   root   TCP
Total SSH Connections: 19
=================================

但是当尝试使用watch命令时,它会抛出错误,并且在取消命令时看不到输出,我会看到如下错误:
sh: PID: command not found
                          sh: -c: line 1: syntax error near unexpected token `('
                                                                                sh: -c: line 1: `acwebseca  90 root   37u  IPv4 0x81ae738f91e7bed9      0t0  TCP 192.168.0.11:49915->108.160.163.33:http (ESTABLISHED)'

我怎样才能解决这个问题。
watch -n 2 "echo '=================================';a=`sudo lsof -i :80`;echo $a | awk '{print $1," ",$2," ",$3," ",$8}'; b=`echo $a | wc -l`; b=$(($b - 1));echo Total SSH Connections: $b;echo '================================='"

最佳答案

如果将脚本写入文件并执行它,它将起作用。然后,它不必是可怕的一线工具,但可以看起来像这样:

echo '================================='
a=`sudo lsof -i :80`
echo $a | awk '{print $1," ",$2," ",$3," ",$8}'
b=`echo $a | wc -l`
b=$(($b - 1))
echo Total SSH Connections: $b
echo '================================='

只需将其放入文件中,然后运行watch my-script.sh即可。这样解决了问题,并使代码同时可读。

编辑:如果您真的想要单线,这是一个坏主意,则可以尝试以下操作:
watch 'echo =================================;a=`lsof -i :80`;echo $a | awk "{print \$1, \$2, \$3, \$8}"; b=`echo $a | wc -l`; b=$(($b - 1));echo Total SSH Connections: $b;echo ================================='

基本上,我调整了报价以使其正常运行。我可能会稍微弄乱awk格式,但是我敢肯定,如果需要,您可以将其改编成形状。

关于linux - Linux watch命令在脚本中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19062577/

10-10 09:35
查看更多