Запуск и завершение работы TAIL через SSH с использованием BASH

Другой вариант с экрана или byobu - открыть вкладку в этих программах. Эти программы упрощают хранение терминальной сессии c.q. оболочка открыта и переключается между этими экранами с помощью клавиатуры.

3
задан 18 August 2017 в 14:06

6 ответов

Похоже, вы ищете что-то вроде этого:

#!/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), а затем запустите его: [ ! d1]

foo.sh > ~/Desktop/Modem.log
4
ответ дан 22 May 2018 в 19:20

Похоже, вы ищете что-то вроде этого:

#!/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), а затем запустите его: [ ! d1] foo.sh > ~/Desktop/Modem.log

4
ответ дан 18 July 2018 в 08:20

Похоже, вы ищете что-то вроде этого:

#!/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), а затем запустите его: [ ! d1] foo.sh > ~/Desktop/Modem.log

4
ответ дан 24 July 2018 в 19:04

Это команда, которая вам нужна для выполнения задания:

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
3
ответ дан 22 May 2018 в 19:20
  • 1
    Это работает, но имеет (возможный) недостаток, что он не покажет, что файл растет в «реальном времени». потому что sed буферизирует свой вывод, поэтому строки будут напечатаны в виде пучков. – terdon♦ 18 August 2017 в 15:01
  • 2
    @terdon Я испытал 100% успешно мой ответ! но буферизация Да, это – αғsнιη 18 August 2017 в 15:02
  • 3
    Да, и это абсолютно работает, и я его поддержал. Все, что я говорю, это то, что он не будет показывать результаты в «реальном времени». потому что sed выполняет буферизацию своего вывода. Это означает, что для вывода первого вывода потребуется несколько секунд. Я не знаю, является ли это проблемой для OP (не будет, если они просто хотят, чтобы все было сохранено в файле), но я чувствовал, что это стоит упомянуть. – terdon♦ 18 August 2017 в 15:04
  • 4
    В чем смысл sed '/PATTERN/q' <( tail -F logfile ) здесь вместо tail -F logfile | sed '/PATTERN/q? – shadowtalker 18 August 2017 в 19:16
  • 5
    обратитесь к этому Q & amp; A – αғsнιη 18 August 2017 в 19:30

Это команда, которая вам нужна для выполнения задания:

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
3
ответ дан 18 July 2018 в 08:20

Это команда, которая вам нужна для выполнения задания:

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
3
ответ дан 24 July 2018 в 19:04
  • 1
    Это работает, но имеет (возможный) недостаток, что он не покажет, что файл растет в «реальном времени». потому что sed буферизирует свой вывод, поэтому строки будут напечатаны в виде пучков. – terdon♦ 18 August 2017 в 15:01
  • 2
    @terdon Я испытал 100% успешно мой ответ! но буферизация Да, это – αғsнιη 18 August 2017 в 15:02
  • 3
    Да, и это абсолютно работает, и я его поддержал. Все, что я говорю, это то, что он не будет показывать результаты в «реальном времени». потому что sed выполняет буферизацию своего вывода. Это означает, что для вывода первого вывода потребуется несколько секунд. Я не знаю, является ли это проблемой для OP (не будет, если они просто хотят, чтобы все было сохранено в файле), но я чувствовал, что это стоит упомянуть. – terdon♦ 18 August 2017 в 15:04
  • 4
    В чем смысл sed '/PATTERN/q' <( tail -F logfile ) здесь вместо tail -F logfile | sed '/PATTERN/q? – shadowtalker 18 August 2017 в 19:16
  • 5
    обратитесь к этому Q & amp; A – αғsнιη 18 August 2017 в 19:30

Другие вопросы по тегам:

Похожие вопросы: