Я пытаюсь запустить tcpdump на нескольких удаленных компьютерах для выполнения сетевого анализа с помощью скрипта, но мне не удается его правильно запустить. Команда, которую я хотел бы использовать:

ssh user @ host "nohup sudo /usr /sbin /tcpdump udp -l -s 68 -n -v -i eth0 1> tcpdump.txt 2> tcpdump.err &"

Чтобы запустить tcpdump удаленно, передайте результаты в файл и немедленно верните их. Не имея клавиатуры, установленной на удаленной машине, все, что я получаю, это

sudo: tty отсутствует и не задана программа askpass

написанный в tcpdump.err. Я также попробовал:

  • написание команды в скрипте bash и удаленный запуск скрипта
  • вложение части sudo в команду 'script' (script -c 'nohup sudo ...«)

но безуспешно Есть ли другие альтернативы, которые я могу попробовать?

1 ответ1

0

Вы используете sudo в своей команде, которая требует аутентификации, если на удаленном хосте не настроено иначе. Вы будете вынуждены ввести пароль для аутентификации, если вы не попробуете что-то вроде

user NOPASSWD: /usr/sbin/tcpdump

в файле sudoers на удаленном хосте.

Это может иметь серьезные последствия для безопасности; если кто-то взломает систему как этот пользователь (или просто сядет за одну из своих авторизованных консолей), он может tcpdump весь трафик на / с этого хоста без аутентификации как root или этого пользователя.

Посетите раздел tag_spec справочной страницы sudoers для более подробной информации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .