Задать вопрос
erohin_d
@erohin_d
DevOps в ЛАНИТ

Как скопировать строку из файла на удалённом сервере?

Есть скрипт на bash, в который надо добавить код, который сможет залезть на удаленный сервер, залезть в файл и скопировать от туда строку.

Ничего пока не придумал, кроме как скопировать удаленно файл на свой ПК и уже тут у него вытащить нужную строку.
Но этот вариант неудачный ибо, на практике эти фалы будут достигать 60 мб и больше.
  • Вопрос задан
  • 531 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 2
3vi1_0n3
@3vi1_0n3
SSH-клиент умеет выполнять команды удаленно.
Для этого:
1) Надо настроить аутентификацию по ключам, либо использовать askpass (не очень хороший вариант)
2) Использовать команду
ssh user@host команда-для-удаленного-хоста
Или сразу записать в переменную результат:
RESULT=$(ssh user@host команда-для-удаленного-хоста)
Ответ написан
Комментировать
valerium
@valerium
Изобретая велосипед
ssh remote.server.ru "grep needle /path/to/file"
Как-то так. Выведет то, что найдёт grep. Соответственно, grep можно заменить на tail, head, sed или любую другую команду. Если манипуляция какая-то шибко сложная (потребуется много разных кавычек), то можно использовать heredoc, передать скрипт на стандартный ввод ssh.

ssh remote.server.ru <<CODE
awk -F';' '/pattern/ {print $3}' /path/to/file
CODE


Но это при условии, что скрипт будет запускаться ручками, то есть Вы сами введёте пароль от учётки на удалённом сервере или пароль от ключа. Если нужно делать это автоматически, то лучше на стороне удалённого сервера написать скрипт, который эту строку будет по какому-нибудь HTTP отдавать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
microphone
@microphone
Сломалось - читай логи!
А критерии поиска строки какие? Уникальное значение? или определенный номер строки?
Как подключиться к удаленной машине по ssh я так понимаю у вас проблем не вызывает?
Ответ написан
butteff
@butteff
Раз в тысячу лет заправляю свитер в носки
Можно на удаленном сервере брать эту строку и отправлять через rsync какой-нибудь.
Или вовсе показывать строку в онлайн, тогда скрипт с вашего пк сможет ее смотреть через wget и перенаправление потоков ввода-вывода. Конечно, если строка не сверхсекретна. Но если и так, можно apache авторизацию прикрутить. Но я не уверен, что в целом решение не костыль.
Ответ написан
erohin_d
@erohin_d Автор вопроса
DevOps в ЛАНИТ
Действительно, все оказалось просто. Спасибо Валерий Рябошапко

ssh remote.server.ru "grep needle /path/to/file"
Ответ написан
Комментировать
@Hanggard
expect
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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