Выполните команды на удаленные серверы 2 сценариями

В настоящее время я использую SSHPass в сценарии для соединения с удаленным сервером:

sshpass -p PASSWORD ssh -o StrictHostKeyChecking=no USERNAME@1.1.1.1

и выполнить любую команду удаленно, я использую:

sshpass -p PASSWORD ssh -o StrictHostKeyChecking=no USERNAME@1.1.1.1 "COMMAND"

Я планирую разделить шаг соединения в одном сценарии (conn.sh) и команды в другом (cmd.sh).

Я попробовал этот путь:

cmd.sh:

#!/bin/bash
ls -ltr

conn.sh:

#!/bin/bash    
sshpass -p PASSWORD ssh -o StrictHostKeyChecking=no USERNAME@1.1.1.1 "$1"

И выполнение после предоставления обоих сценариев "chmod a+x":

./conn.sh cmd.sh

Но это дало мне ошибку:

cmd.sh: command not found

Я даже пытался заменить $1 с путем к cmd.sh, но это дало мне эту ошибку:

sh: /home/myhome/cmd.sh: No such file or directory
1
задан 16 February 2016 в 19:55

1 ответ

Причина, которую это приводит к сбою, является этим при выполнении чего-то как

ssh user@remote command

command не только выполняется на удаленной машине, она также разыскивается на удаленной машине. Поэтому, когда Вы работаете ./conn.sh cmd.sh, Вы соединяетесь с удаленным, и затем Вы пытаетесь запустить названный скрипт cmd.sh на удаленном. С тех пор нет такого сценария (это хранится на Вашей локальной машине), сбои выполнения, и Вы видите ту ошибку.

Можно сделать то, что Вы описываете путем изменения Вашего conn.sh кому:

#!/bin/bash
sshpass -p PASSWORD ssh -o StrictHostKeyChecking=no USERNAME@1.1.1.1 \
 bash -s < "$1"

И затем выполненный

./conn.sh /local/path/to/cmd.sh

Это откроет оболочку удара на удаленной машине. -s говорит удару читать команды из стандартного входа и < "$1" обеспечивает 1-й аргумент, данный conn.sh как вход к той оболочке удара.

Вы уверены, что необходимо сделать это хотя? То, что Вы описываете, является почти наверняка проблемой XY. Простое решение состоит в том, чтобы создать cmd.sh на удаленном сервере. Затем можно сделать

./conn.sh /remote/path/to/cmd.sh
1
ответ дан 7 December 2019 в 16:01

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

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