Я хочу запустить testcmd.sh
на удаленном хосте (Testhost), используя следующую команду:
ssh test@Testhost 'bash -s' < /test/testcmd
Но я получаю следующую ошибку:
!!!!!Running MASTERCMD!!!!!
bash: line 31: /test/PROCESSLIST: No such file or directory
Я не хочу поместите файл PROCESSLIST
локально на Testhost. Как мне это преодолеть?
Cat Testcmd ниже:
echo "!!!!!Running MASTERCMD!!!!!"
RC=0
while read proc; do
if (( 0 == $(ps -ef | grep -v grep | grep -c /test/$proc) )); then
echo "!!!!! $proc down on TU !!!!!"
RC=1
else
echo "!!!!!! $proc is still running on TU!!!!!"
fi
#echo "Not checked"
done < /test/PROCESSLIST
Когда сценарий /test/testcmd
работает на удаленном хосте, ему нужен a /test/PROCESSLIST
файл в удаленном хосте, таким же образом этому нужен он в локальном хосте (while [...]; do [...]; done < /test/PROCESSLIST
).
Это - то, о чем ошибка, но движение далее сценарий собирается стать безубыточным при фиксации это, так как также требуются несколько /test/$proc
файлы, подлинные имена которых определяются во времени выполнения на основе /test/PROCESSLIST
содержание (if [...] grep -c /test/$proc [...]; then [...]; else [...]; fi
).
В конце необходимо скопировать локальное /test
папка к удаленному хосту:
scp -r /test test@Testhost:/test
Однако необходимо будет очень вероятно быть корнем на удаленном хосте, чтобы смочь скопировать его в /
:
scp -r /test root@Testhost:/test
Однако корневой мог бы быть отключен / не имеют никакого набора пароля на удаленном хосте; таким образом, обходное решение должно было бы скопировать папку в test
корневой каталог и скопировать его в /
использование sudo
:
scp -r /test test@Testhost:~/test
ssh -t test@Testhost sudo mv ~/test /test