Я знаю, что об этом много дискуссий, но мне нужна ваша помощь с кодами выхода удаленной команды ssh. У меня есть этот код: (scan
— это скрипт, который сканирует данный файл на наличие вирусов)
for i in $FILES
do
RET_CODE=$(ssh $SSH_OPT $HOST "scan $i; echo $?")
if [ $? -eq 0 ]; then
SOME_CODE
Сканирование работает и возвращает либо 0, либо (1 для ошибок), либо 2, если обнаружен вирус. Но каким-то образом мой код возврата всегда равен 0. Даже если я сканирую вирус.
Вот вывод set -x
:
++ ssh -i /home/USER/.ssh/id host 'scan Downloads/eicar.com; echo 0'
+ RET_CODE='File Downloads/eicar.com: VIRUS: Virus found.
code of the Eicar-Test-Signature virus
0'
Вот вывод, если я запускаю эти команды на «удаленном» компьютере без ssh:
[user@ws ~]$ scan eicar.com; echo $?
File eicar.com: VIRUS: Virus found.
code of the Eicar-Test-Signature virus
2
Я просто хочу получить код возврата, мне не нужен весь остальной вывод scan
.
!ОБНОВИТЬ!
Похоже, проблема в echo
.
exit 0
, если я перенаправлю вывод на/dev/null
? 02.10.2018