#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
на удаленной машине, вам не нужно вводить пароль.