Вопрос по command, unix, shell, remote-server, ssh – Ssh-скрипт UNIX, выполняющий команды на удаленном сервере

5

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

!/bin/sh
ssh -o PreferredAuthentications=publickey [email protected]
cd ~/folder
"i would like to grab file and copy it to client machines folder"

РЕДАКТИРОВАТЬ: я не уверен, если вы заметили, но я использовал без пароля соединение с удаленным сервером с помощью ssh и генерации ключей. Я ценю идеи, но я ищу, возможно, конвейерные команды или запускать команды на удаленном сервере со сценарием на клиенте. Я понимаю, что удаленный сервер не имеет доступа к клиентскому скрипту, однако мне было любопытно, можно ли передать команды через соединение ssh.

Авторизация открытого ключа может быть настроена с помощью ssh-keygen на вашем клиенте и файла author_keys на сервере (я дал ссылку в моем ответе ниже). nik
Если вы настаиваете на выполнении команд через ssh, вам придется ставить перед каждой командой префиксssh [email protected] exec  фраза. Однако я хочу знать, используете ли вы вышеперечисленные & quot; получить файл & quot; пример в качестве ссылки? и у вас есть более сложная последовательность команд для выполнения таким образом? nik

Ваш Ответ

10   ответов
1

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

отличное решение от Yarek T:

Возможно, вам придется немного поэкспериментировать с цитированием или экранированием, но он выполняет свою работу, с одним подключением к удаленному и сценарием, оставшимся локальным.

0

как сделать конкретный пример, который вы даете, лучше и проще.

Если вы действительно делаетеneed чтобы написать сценарий удаленного взаимодействия, вы можете использоватьexpect.

14

УПП ("Безопасная копия"), а неSSH («Безопасная оболочка»).

За кулисами scp использует ssh. Вы можете использовать опцию -o для передачи любых параметров, которые вы хотите, ssh (например, PreferredAuthentication)
я использую ssh для удаленного подключения, не вводя пароль, если я использую scp, он спросит пароль ... есть ли способ использовать команду scp с авторизацией ключа? user123661
2

конечно, вы можете передать команды из вашего локального скрипта с помощью:

ssh thehost < commands.sh
13

если вы не хотите, чтобы на удаленном сервере был доступен сценарий, попробуйте следующее:

ssh thehost 'cd /tmp; ls; echo Hello world, I am `hostname`'

и для копирования без SCP:

ssh localhost 'cat /bin/bash' > local_bash
почему это должно быть', не" вssh thehost 'cd /tmp; ls; echo Hello world, I am имя хоста'
3

Вы должны использоватьssh таким образом, чтобы выполнять сценарии на удаленных машинах,

ssh [email protected] exec /path/to/script/script.sh

гдеscript.sh доступно на сервере по указанному пути изuser авторизоваться.

Если сценарий отсутствует на сервере, но доступен на локальном компьютере (и у вас нет общего общего пространства NFS между двумя компьютерами), необходимо отправить сценарий сscp как это,

scp script.sh [email protected]:/path/to/script/

Теперь, для вашего конкретного случая получения файла сервера, вы должны просто выполнить,

scp [email protected]:/path/to/file/filename .

как некоторые другие ответы уже предлагают.

@brjones, эта ссылка должна помочь,ssh.com/support/documentation/online/ssh/adminguide/32/…
Авторизация открытого ключа может быть выполнена в два этапа. (1) использовать ssh-keygen для создания пары ключей, а затем, (2) скопировать строку открытого ключа вauthorized_keys файл на сервере; присутствует в~/.ssh/ каталог.
Мне было интересно, можете ли вы взглянуть на мою правку и сказать, что вы думаете, или можно ли использовать авторизацию ключей с SCP. user123661
5

вы должны использовать scp. Но для выполнения некоторых команд на удаленном хосте без специального сценария на этом удаленном хосте вы можете просто использовать stdin следующим образом:

!/bin/sh
ssh -o PreferredAuthentications=publickey [email protected] << EOT
cd ~/folder
echo "hello" > hello.txt
...
EOT
0

который присутствует на localhost

ssh remote [email protected] < localScript.sh

Если вы хотите вызвать скрипт, который уже находится на удаленном хосте

ssh remote [email protected] "$PATH_OF_SCRIPT/remoteScript.sh"

2

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

ssh [email protected] do_foo.sh

запустит скрипт do_foo.sh на сервере

Однако для вашей ситуации похоже, что вы действительно ищете SCP.

0

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