Без sudo
команда не имеет прав на захват устройства:
tcpdump: eth0: У вас нет разрешения на захват на этом устройстве
Но с sudo
да, но при запуске после ssh
он никогда не получает ввод пароля для sudo
на удаленном сервере, поэтому решение - использовать -S
( man sudo
) и пароль канала для sudo
следующим образом:
ssh john@server-abc.com "echo sudo_password | sudo -S tcpdump -s 0 -U -n -w - -i eth0 not port 22" > /tmp/remote"
С одной стороны, это хорошо для автоматизации без получения подсказок пароля sudo
и, чтобы иметь полностью автоматизированный код / скрипт, вы должны добавить sshpass -p password ssh ...
.
Однако на сервере, где другие могут легко прочитать ваш пароль sudo, предоставленный в виде открытого текста во время сеанса ssh
, это не рекомендуется с точки зрения безопасности. Итак, чтобы иметь sudo
с ssh
и быть в безопасности, используйте ssh -t
С -t
невозможно передать ssh по конвейеру "команда sudo" | команда
например ssh -t server "cd path / to / directory && sudo" | grep "text"
, но это возможно с использованием -S и повторением пароля, например эхо-пароль ssh-сервера | sudo -S ls -l '| grep 'a'
Если вы делаете:
mount -t type /dev/somedev /dir/somedir
Вы устанавливаете файл устройства Somedev
в каталоге Somediр
. Somedir
- это и остается каталогом, доступ к устройству «перенаправляет» через монтажную точку в устройство SOMEDEV
. Чтобы ответить на ваш второй вопрос ( имеют соответствующий файл устройства где-то
) непосредственно: Да, это делает SOMEDEV
, который вы используете для монтажа.