Unix: Grep на консольном выходе - PullRequest
3 голосов
/ 23 августа 2011

Это мой первый вопрос по stackoverflow!Я хочу иметь сценарий Unix, который будет запускать grep на выходе консоли.Вот что делает мой скрипт: 1. Telnet к удаленному серверу (я успешно выполнил эту часть) 2. При успешном входе в систему удаленный сервер отображает информацию о выводах на консоли.Мне нужно запустить grep для этого вывода консоли (нужна помощь с этим)

Итак, мне нужен скрипт для запуска grep для вывода, появляющегося на консоли.

Любые мысли ??

Спасибо, Пунит

Ответы [ 4 ]

3 голосов
/ 23 августа 2011

Вместо этого используйте SSH.Это более безопасно и намного проще для сценариев.

ssh remoteusername@remotehost:/path/to/remote/script | grep 'something'

с соответствующей настройкой ключа, он даже не запросит у вас пароль.

1 голос
/ 23 августа 2011

Вместо telnet я бы предложил использовать netcat (nc).Затем вы можете передать свои учетные данные для входа через стандартный ввод и получить стандартный вывод (nc печатает все, что отправлено сервером на стандартный вывод).

nc <host> <port> <auth.txt | grep 'string'
1 голос
/ 23 августа 2011

Вы пробовали перенаправление ввода / вывода?Вы можете либо сделать

$ your-command > output.txt

, а затем запустить grep для этого файла, либо просто напрямую направить вывод через grep следующим образом:

$ your-command | grep ...

См. эту статью илипоглядеть на подобное.В Интернете, вероятно, есть тысячи хороших статей об этом.

0 голосов
/ 24 августа 2011

То, что вы хотите сделать, это, вероятно, использовать трубу.Вероятно, вы можете увидеть это в ответах выше, это знак |, который вы видите в команде.Это может быть трудно найти на клавиатуре, в зависимости от раскладки.(Я должен признать, что это не очень часто используется).

Трубы перенаправят вывод одной команды.Вместо того, чтобы отправить его на консоль, они отправят его как ввод другой команды.

cmd1 | grep foo эквивалентно выполнению grep foo на выходе cmd1 (вы можете заменить cmd1 командой netstat).

И последнее, что вы можете иметь столько труб, сколько захотите.Например, на моей машине я могу запустить ls -ltr | tail -1 | awk '{print $9}' | grep foo, чтобы найти слово foo в последнем измененном файле.

...