сохранить удаленный вывод команды локально через команду ssh proxy

Команда, я выполняю некоторые команды на удаленном сервере Ubuntu из клиента Ubuntu. Я хочу сохранить вывод этого в локальный каталог клиента.

Я пытаюсь запустить другие команды из клиента после того, как я сохраню результат команды, которую я выполнил через сессию ssh.

Шаги: Подключитесь к Remote ssh через прокси-команду, затем запустите процесс, затем сохраните его состояние в файле. Я хочу, чтобы этот файл был сохранен локально, а не удаленно. Во-вторых, когда я выполняю команду вручную на удаленной машине, я вижу, что статус сохраняется в файле, но при выполнении через скрипт файл все еще пуст. любой намек?

ssh -o StrictHostKeyChecking=no -i test-ssh-key -o 'ProxyCommand ssh -i test-ssh-key -W %h:%p lab@api.test.com' lab@$free_node "echo Test!!123 | sudo -S echo; sudo systemctl start cachefilesd; sudo rm /var/log/cachefiles_status.log; sudo ps x | grep cachefilesd | sudo awk '{print $1}' | sudo sed -n -e 1,1p | xargs -l1 -- sh -c 'sudo  grep "State:" /proc/$1/status' -- | awk -F '(' '{print $2}' | awk -F ')' '{print $1}' > /tmp/cachefiles_status.log; sudo cp /tmp/cachefiles_status.log /var/log/; sudo cat /var/log/cachefiles_status.log; ls -ltr /var/log"
0
задан 7 May 2019 в 02:41

1 ответ

Используйте ssh_config (~/.ssh/config), чтобы установить настройку прокси. Это значительно сократит ваши вкладыши.

Таким же образом, передавая свои команды серверу, вы можете сохранить их выходные данные во временном файле, а затем rsync вывести файлы на локальный компьютер через прокси-сервер SSH. Rsync использует ssh_config, когда он присутствует, но вы также можете указать пользовательские настройки SSH с помощью флага rsync -e.

Таким образом, ваша конфигурация ssh будет выглядеть примерно так:

Host free_node
    StrictHostKeyChecking no
    IdentityFile test-ssh-key
    User lab
    ProxyCommand ssh -i test-ssh-key -W %h:%p lab@api.test.com

Затем:

rsync -av free_node:/root/output.log ~/

В качестве альтернативы, если rsync отсутствует на вашем сервере и вы не можете его установить, вы можете используйте вместо этого scp .

scp free_node:/root/output.log ~/

Однако я рекомендую использовать ansible или любой другой инструмент автоматизации для этой работы. Ansible использует команды ssh и ad-hoc. Python - это его единственное требование на стороне сервера, однако с необработанным модулем ansible вам даже не нужно устанавливать python на ваш сервер. Вы также можете использовать пользовательские команды ssh для передачи ваших соединений через прокси, как описано в ansible faq .

0
ответ дан 7 May 2019 в 02:41

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

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