Linux Shell:如何获取sshd端口和PID

时间:2013-04-08 01:58:16

标签: linux shell sed

我使用以下命令:

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

2 个答案:

答案 0 :(得分:1)

例如:

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

答案 1 :(得分:1)

你过度思考这个问题:

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

即:这适用于我的机器,你的netstats输出可能不同。