Вход с помощью скрипта на удаленный сервер и выполнение набора команд

#bash #command-line #ssh

#bash #командная строка #ssh

Вопрос:

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

Спасибо.

Комментарии:

1. Не указывайте Perl в качестве ключевого слова, если у вас нет вопроса по Perl

Ответ №1:

ssh можно использовать для выполнения команды, а не для запуска удаленной интерактивной оболочки входа. Например:

 ssh user@host ls
  

Войдет в систему host и выполнит ls команду.

Вы можете использовать это внутри скрипта bash как обычно:

 #!/bin/bash

# do local commands

ssh user@host "ls; grep something file.txt; copy a b"

# do more local commands
  

На справочной странице ssh статусом выхода будет статус выхода команды remove или 255, если произошла ошибка.

Комментарии:

1. Несколько вариантов: (1) поместите команды в отдельный файл, используйте scp для копирования команд на удаленный сервер и запустите его или (2) поместите команды в переменную внутри скрипта bash и просто запустите его как ssh user@host "$COMMAND" . Вы могли бы читать из файла в команду, а не размещать все это встроенным: COMMAND=$(cat remote_cmds.sh)

2. Почему они не работают: ssh user@domain.com «EEEEE=’eeeessssse’ echo ‘$EEEEE’ echo «$EEEEE»»

3. @emurad: Вам нужно разделять команды точкой с запятой, и вы должны поменять местами двойные и одинарные кавычки, чтобы локальная оболочка не $EEEEE : ssh user@domain.com 'EEEEE='eeeesssse';echo "$EEEEE";echo "$EEEEE"'

4. Я последовал вашему первому предложению, и оно сработало очень хорошо (scp). Спасибо.

5. В качестве альтернативы, разделение команд на новые строки тоже сработало бы. Не уверен, как вы можете использовать это в perl, хотя.

Ответ №2:

Небольшое изменение с более простым форматированием кода с помощью ssh и bash -s :

 echo '
globchar="*"
ls -1d $globchar
ls -ld $globchar
' |
ssh user@host "bash -s --"
  

Ответ №3:

Как указывали другие, вы можете использовать ssh . Однако, если вы запускаете скрипт, вам может потребоваться настроить ssh вход без пароля. Вы можете сделать это, настроив открытый / закрытый ключ с помощью команды ssh-keygen. Также измените разрешение файлов ключей (id_rsa, id_rsa.pub) на 600 для открытого ключа и 400 для закрытого ключа для безопасности модификации. chmod 600 id_rsa.pub ;chmod 400 id_rsa

В вашей системе вы запускаете ssh-keygen для генерации открытого и закрытого ключей. В Unix / Linux / Mac они находятся в $HOME/.ssh каталоге. (Оставьте кодовую фразу пустой!). Затем вы хотите создать вызываемый файл authorized_keys на удаленном компьютере в $HOME/.ssh каталоге и скопировать туда свой открытый ключ.Нет необходимости генерировать ключи шифрования на удаленном m /c.

Теперь, когда вы выполняете ssh или scp на удаленной машине, вам не нужно вводить пароль.