2013-04-08 40 views
-2

我用下面的命令:提供的Linux Shell:如何让sshd的端口和PID

sudo netstat -tnp | grep sshd 

输出是:

tcp  0  0 192.201.0.8:22   192.201.0.90:2690  ESTABLISHED 1866/sshd: yang [pr 

比,我用下面的命令:

$ echo -n "sshd Port&&pid: " ; sudo netstat -tnp | grep sshd | awk '{print $4, $7}' | sed -r 's/^[^:]*:([a-z]*)/\1/g' 

输出是:

sshd Port&&pid: 22 1866/sshd: 

最后,使用下面的命令:

$ echo -n "sshd Port&&pid: " ; sudo netstat -tnp | grep sshd | awk '{print $4, $7}' | sed -r 's/^[^:]*:([a-z]*)/\1/g; s/([0-9]*)\/sshd:$/\1/g' 

输出是:

sshd Port&&pid: 22 1866 

虽然我已经解决了我的问题,有没有更好的方式来做到这一点?

另一个答案:

$ sudo netstat -anp | grep "sshd" | grep -v "\]" | sed -r 's/.*:([0-9]+).* ([0-9]*)\/.*$/sshd Port\&\&pid: \1 \2/' | sort | uniq 
+0

*质量很低:*您尝试过什么? – 2013-04-08 01:58:58

+0

@DannyBeckett我编辑了我的问题添加了我试过的东西,任何帮助将不胜感激。 – ajaxhe 2013-04-08 02:24:17

+0

我已经为此+1了。 – 2013-04-08 02:26:05

回答

1

例如:

$ echo foo/bar | sed 's,/.*,,' 
foo 
$ 
1

你过度思考问题:

netstat -anp | awk -F"[: /]" '/sshd/{printf "sshd Port&&pid: %s %s\n", $5,$9 }' 
sshd Port&&pid: 22 1866 

那就是:这个作品在我的机器上,你netstats输出可能会有所不同。