2015-07-28 3 views
0

У меня есть сценарий вроде этого:Grep команда не работает при запуске удаленного

if rsh $server grep "string" /usr/path/file.txt 
then 
    echo "yes" 
else 
    echo "no" 
fi 

В основном я хочу, чтобы проверить файл на удаленный сервер, содержащий некоторые конкретные строки. Он не работает и всегда показывает «да», что бы я ни ввел в строку.

Однако, если я удалю «rsh $ server», то есть работает локально, и помещает этот файл в локальный, он работает нормально.

Кто-нибудь знает, в чем проблема? Как изменить мой скрипт?

+0

Вы уверены, что тестируете код выхода grep, а не rsh? –

+0

Статус выхода 'rsh' - это только то, удалось ли вам успешно подключиться, оно не передает статус выхода удаленной команды. – Barmar

+1

Можете ли вы использовать 'ssh' вместо' rsh'? Это сделает то, что вы хотите. – Barmar

ответ

1

Вы можете запустить grep локально с данными из удаленного файла:

if rsh $server cat /usr/path/file.txt | grep "string" 
then 
    echo "yes" 
else 
    echo "no" 
fi 

Это будет медленным, если файл большой, так как весь файл должен быть отправлен по сети, так что местное grep может прочитайте его.

+0

lol большое спасибо. Я просто ответил вам, и мы оба находим это решение в то же время, я думаю :) – user2597504

+0

Это был ваш пример «ps», который дал мне идею для этого. – Barmar