Я пытаюсь наблюдать изменения файла через SSH и скопировать изменения его в локальном компьютере с помощью Bash. Я выполнил следующую команду, чтобы контролировать и скопировать:
ssh root@192.168.88.238 "tail -F /media/sdcard/SA000001.log"> ~/Desktop/Modem.log
Который работает отлично. Но затем это продолжает бежать. Я хочу завершить хвост и ssh после определенного периода (Или когда определенная строка найдена).
Я попробовал следующую команду, но она не работала:
ssh -t root@192.168.88.238 "tail -F /media/sdcard/SA000001.log && sleep 10 && exit"> ~/Desktop/Modem.log
Я также пытался передать exit
и значение ASCII CTRL+C
через эхо, но не могло закончиться/уничтожить хвост и ssh.
Затем я попробовал следующее:
#!/bin/sh
ssh -t root@192.168.88.238 "tail -F /media/sdcard/SA000001.log | while read TEMPLOGLINE"> ~/Desktop/Modem.log
do
[[ "${TEMPLOGLINE}" == *"temp"* ]] && pkill -P $$ tail
done
exit
Я также попробовал это:
#!/bin/sh
ssh -t root@192.168.88.238 "tail -F /media/sdcard/SA000001.log"> ~/Desktop/Modem.log
ssh -t root@192.168.88.238 "/X03"
ssh -t root@192.168.88.238 "exit"
Вот мой файл удара в данный момент:
#!/bin/sh
ssh -t root@192.168.88.238 "tail -F /media/sdcard/SA000001.log"> ~/Desktop/Modem.log
Какие-либо предложения о том, как я должен возобновить это?
Заранее спасибо.
Это кажется на поиск чего-то вроде этого:
#!/bin/bash
ssh root@192.168.88.238 tail -F /media/sdcard/SA000001.log | while read line; do
echo "$line"
if [[ $line =~ 'temp' ]]; then
exit
fi
done
Сохраняют сценарий выше как foo.sh
или что бы то ни было, делают это исполняемым файлом (chmod a+x foo.sh
) и затем выполняют его:
foo.sh > ~/Desktop/Modem.log
Это - команда, необходимо сделать задание:
ssh USER@HOST "bash -c 'sed '/PATTERN/q' <(tail -F /path/to/dest/log)'"> inlocal.log
можно использовать awk
вместо этого в качестве после также:
ssh USER@HOST "bash -c 'awk '1;/PATTERN/{exit}' <(tail -F /path/to/dest/log)'"> inlocal.log