Демон iperf ничего не выводит в файл журнала

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

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
17.11.2017, 02:06
1 ответ

У меня возникла эта проблема после того, как я попробовал то же самое. Как упоминает новичок в комментариях , есть флаг -o, который должен выводить в файл, однако я обнаружил, что это не работает под Linux, несмотря на то, что он находится на странице руководства. В конечном итоге мне нужно было, чтобы iperf продолжал работать после прерывания сеанса ssh. В конце концов я использовал следующую команду.

nohup iperf -s > iperflog 2>&1 &

Чтобы немного разобраться, мы запускаем iperf с флагом сервера и перенаправляем стандартный вывод в файл iperflog. 2>&1перенаправляет stderr на stdout, чтобы обеспечить захват всего вывода в этом файле, включая ошибки. &указывает оболочке запустить эту команду в фоновом режиме. Это по-прежнему приведет к завершению процесса при закрытии сеанса, поскольку он будет отправлен SIGHUP. nohupисправляет это, игнорируя этот сигнал и позволяя процессу продолжать работу.

Затем вы можете запустить tail -f iperflogдля просмотра вывода в оболочке в обычном виде.

Это не идеально, так как требует оболочки, чего не требовала предыдущая команда, но это привело меня туда, где мне было нужно.

2
02.02.2020, 05:41

Теги

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