Я пытаюсь запустить 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 ...')
но безуспешно Есть ли другие альтернативы, которые я могу попробовать?
Ответы:
Вы используете sudo в своей команде, которая требует аутентификации, если на удаленном хосте не настроено иначе. Вам придется ввести пароль для аутентификации, если вы не попробуете что-то вроде
в файле sudoers на удаленном хосте.
Это может иметь серьезные последствия для безопасности; если кто-то взломает систему как этот пользователь (или просто сядет за одну из своих авторизованных консолей), он может tcpdump весь трафик на / с этого хоста без аутентификации как root или этого пользователя.
Посетите раздел tag_spec справочной страницы sudoers для более подробной информации.
источник