2015-03-14 2 views
1

Я пробовал разные команды netstat, lsof, но мое требование, я хочу передать порт прослушивания сказать, процесс х работает на chl21000303.sesson.net: 32456 .как получить только слушающих порты процесса в Linux

Мне нужна команда linux, которая читает только порт 32456 и хочет передать ее в java, например java -jar runs.jar.

Так что мне нужны некоторые команды, чтобы получить только рабочий порт или порт прослушивания. Если я попробую команды netstat вроде этого, я скажу около 20 строк портов.

+0

Включая «пожалуйста, помогите» и спасибо в сообщении неуместно. не отвлекайтесь, нет chit-chat (читайте [help → tour] (http://stackoverflow.com/tour)) – Anthon

ответ

0
netstat | awk '{print $4}' | sed -nr 's/.*:([0-9]+)/\1/p' | xargs java -jar runs.jar 

Я не знаю, о чем я спрашиваю. Выше будет подключить все номера портов в аргументы вашего Java-файла

Если вы уверены, что это будет на chl21000303.sesson.net вы могли бы вместо того, чтобы сделать

netstat | awk '{print $4}' | sed -nr 's/chl21000303.sesson.net:([0-9]+)/\1/p' | xargs java -jar runs.jar 

Edit-

для полного завершения плохо дать краткий обзор того, что все делает.

netstat получает все соединения и подключает его к awk. awk получает 4-й столбец и передает его в sed. СЭД получает номер порта, используя регулярные выражения и трубы его к вашей Java программе в качестве аргументов

+0

Спасибо за вашу помощь, я попробую это в понедельник в моем проекте и сообщит вам, есть ли у меня вопросы. Спасибо за ваш ценный ответ и помощь. Теперь не могли бы вы объяснить мне, как это sed работает, и -nr, и регулярное выражение, которое вы написали –

0

Вы можете сделать это в сценарии оболочки

var=`"netstat -atn | grep LISTEN | awk {print $4}"` 
for x in $var 
do 
    port=`echo $x | awk -F':' '{print $2}'`; 
    echo $port; 
done 

У вас есть номер порта в $ порта вы можете передать его в свой java script

Смежные вопросы