Вы не уточняли то, что вы хотели запустить в Chroot. Таким образом, он пытается начать оболочку. Он также не знает, какая оболочка должна начинаться, поэтому он пытается использовать один из переменной $ Shell
переменной среды, которая, по-видимому, / usr / bin / zsh
. Эта оболочка, по-видимому, не существует внутри вашей Chroot.
Расскажите Chroot
То, что вы хотите запустить:
chroot /mnt /bin/bash
В зависимости от того, что вы пытаетесь сделать, у вас также могут быть другие проблемы, если вы Mount -O Bind
несколько вещей от хозяина, такого как / dev
, / dev / pts
, / sys
, & / proc
.
SSH запускает команду оболочки. Он объединяет свои параметры пробелами между промежутками и выполняет удаленно. Таким образом, когда вы вводите это в локальной оболочке
ssh rundeck@nagios1 sudo su - root -c 'printf "Disable_Notification;web01;App:Tomcat:Log:webapp" >> /opt/nagios/nagios.cmd'
, это то, что выполняется в удаленной оболочке:
sudo su - root -c printf "Disable_Notification;web01;App:Tomcat:Log:webapp" >> /opt/nagios/nagios.cmd
, как вы можете видеть перенаправление, применяется во внешней удаленной оболочке, вызываемой SSHD
, не в Внутренняя оболочка запущена SU
. Вам нужен дополнительный слой цитирования: один, чтобы защитить специальные символы от локальной оболочки, чтобы они достигли удаленной оболочки, и он для защиты специальных символов от внешней удаленной оболочки, чтобы они достигли внутренней удаленной оболочки, вызываемые
(плюс третий вокруг строки, чтобы распечатать, чтобы она проходила через эту внутреннюю оболочку).
ssh rundeck@nagios1 'sudo su - root -c '\''printf "Disable_Notification;web01;App:Tomcat:Log:webapp" >> /opt/nagios/nagios.cmd'\'
Вы можете сделать с одним уровнем цитирования, выполнив печать в безвисяченной оболочке и трубе через привилегированную команду (что не нужно быть оболочкой), которые просто пишет в файл.
ssh rundeck@nagios1 'printf "Disable_Notification;web01;App:Tomcat:Log:webapp" | sudo tee /opt/nagios/nagios.cmd'
И вы можете даже сделать печать локально, что исключает другой уровень необходимой цитирования.
printf "Disable_Notification;web01;App:Tomcat:Log:webapp" | ssh rundeck@nagios1 sudo tee /opt/nagios/nagios.cmd
и вместо использования Печать ... | ...
Вы можете использовать здесь строку (при условии, что ваша локальная оболочка ksh, bash или zsh).
ssh rundeck@nagios1 sudo tee /opt/nagios/nagios.cmd <<<"Disable_Notification;web01;App:Tomcat:Log:webapp"
Обратитесь к этому ответу , в сочетании с некоторыми другими флагами Sudo и SSH для выделения псевдо-TTY.
ssh -t rundeck@nagios1 "sudo -u root sh -c 'printf \"Disable_Notification;web01;App:Tomcat:Log:webapp\" >> /opt/nagios/nagios.cmd'"