Назад | Перейти на главную страницу

запустить firewalld.service ЧЕРЕЗ ssh

у нас очень странная проблема при настройке и запуске брандмауэра на удаленной машине

когда мы запускаем VIA ssh следующую команду (из сценария bash),

пример из скрипта:

ssh $USER@$IP systemctl enable firewalld.service
ssh $USER@$IP systemctl start firewalld.service

тогда мы получаем сообщение о таймауте от команды - systemctl start firewalld.service

но когда мы запускаем - systemctl start firewalld.service manual на машине

затем мы получили доступ, чтобы запустить его

Так почему же через SSH мы не можем запустить команду, но можем запустить ее локально?

в чем тут отличия?

У меня под рукой нет машины Redhat 7, поэтому я не могу указать точные значения. Но:

Когда вы входите в систему, вы обычно получаете богатую среду для вашего удобства во время интерактивных сеансов. Конечно, зависит от вашей настройки, потому что вы можете установить любой среду, в которую вы хотите добавить операторы в / etc / profile, $ HOME / .bashrc и многими другими способами.

Напротив, когда вы просто вводите удаленную команду, вы получаете более минимальную среду; некоторые каталоги могут отсутствовать в вашей переменной среды PATH, например.

Простым способом увидеть различные среды будут следующие два занятия:

ssh $USER@$IP env

против

ssh $USER@$IP
env
exit

Вы можете начать со сравнения значений PATH и попробовать запустить свою команду systemctl enable firewalld.service в интерактивной оболочке, но после изменения переменной PATH на ее неинтерактивный вариант.

Если это еще не дает вам бинго, настройте всю среду вашего интерактивного сеанса точно так же, как в неинтерактивной версии.

Есть еще одно отличие ssh host command способ: у вас нет tty; вы видите, что это выдает команду tty. Ваш интерактивный сеанс ответит примерно так: /dev/pts/3, пока ssh host tty будет отвечать not a tty. Я заметил, что systemctl зависит от tty или даже ведет себя немного иначе, но другие команды, которые он вызывает, могут это делать. Вам может потребоваться ssh для выделения tty, добавив переключатель -t, например ssh -t $USER@$IP systemctl enable firewalld.service чтобы увидеть, имеет ли это значение.