Извлечение IP из IP.port

visudo и

Defaults env_keep += "EDITOR"

спасибо Sato Katsura за указание на меня

0
02.08.2017, 20:57
5 ответов

Вы можете использовать cutилиsed:

echo 192.168.15.73.64759 | cut -d '.'  -f 1-4 
echo 192.168.15.73.64759 | sed -E 's,\.[0-9]+$,,'

Илиawk:

echo 192.168.15.73.64759 | awk -F '.' '{print $1"."$2"."$3"."$4}'
2
28.01.2020, 02:25

Использовать замену строки:

$ IP=192.168.15.73.64759
$ echo ${IP%.*}
192.168.15.73

IP=$(netstat | grep telnet | grep ESTABLISHED | awk 'NR==1{ print $5}')
echo ${IP%.*}
0
28.01.2020, 02:25

Только что узнав о сс:

ss -n -o state established '( dport = :telnet or sport = :ssh )' | 
  awk  'NR==2 { print substr($5, 1, index($5, ":")-1) }'

Я использую NR==2, чтобы пропустить заголовок и получить только первую строку вывода, чтобы соответствовать вашему поведению netstat/grep. Остальная часть awk-кода печатает $5, но начиная с первого символа и продолжая только до индекса, в котором найдено «:», минус один.

Если в системе отсутствует ss, то можно использовать sed:

echo 192.168.15.73.64759 | sed 's/\.[0-9]*$//'

netstat | grep telnet | grep ESTABLISHED | awk 'NR==1{ print $5}' | sed 's/\.[0-9]*$//'

Это заменяет «точка, за которой следует ноль или более цифр, за которыми следует конец строки» на «ничего».

1
28.01.2020, 02:25
netstat | grep telnet | grep ESTABLISHED | awk 'NR==1{ print $5}' |grep -Po "\b(?:\d{1,3}\.){3}\d{1,3}\b"
0
28.01.2020, 02:25

Вы также можете сделать это с помощьюgrep -E

in="192.168.15.73.64759"

echo $in | grep -Eo "([[:digit:]]{1,3}\.){4}" | grep -Po "(.*)(?=\.$)

~#: 192.168.15.73

-E позволяет использовать расширенные регулярные выражения, а -P для совместимости с Perl позволяет включать последнюю точку в шаблон, но исключать ее из вывода

0
28.01.2020, 02:25

Теги

Похожие вопросы