Привет всем,
В настоящее время у меня проблема с отправкой команд через SSH через командную строку на сервер. Чтобы иметь простой пример, я всегда посылаю команду "pwd", которая должна возвращать текущую папку, в которой вы находитесь.
Я успешно создаю исходное соединение SSH с помощью следующей команды:
sshg3 user@server#port 'pwd'
который подключается к серверу и замыкает домашнюю папку.
После этого я использую sudo su - user2 - потому что пользователь имеет больше прав как пользователь (необходимый для определенных задач):
sshg3 user@server#port "echo pwd|sudo su - user2"
Здесь, однако, если я хочу объединить несколько команд друг за другом, мне нужно вставить «» - иначе это не сработает:
sshg3 user@server#port "echo ""pwd;pwd""|sudo su - user2"
Если у меня нет или только один ", результат:
pwd
-bash: line 1: {homefolder}: is a directory
Теперь, после использования lftp, мне нужно загрузить данные на этот сервер, используя еще одного пользователя. Используя другой канал, я получаю это для работы с одной командой следующим образом:
sshg3 user@server#port "echo ""echo pwd|lftp -u user3 -p 1234 server2""|sudo su - user2"
И теперь возникает проблема: отправка нескольких команд на второй сервер не работает. Если я использую тот же шаблон, что и раньше (""), я получу такой результат:
sshg3 user@server#port "echo ""echo ""pwd;pwd""|lftp -u user3 -p 1234 server2""|sudo su - user2"
Это печатает:
echo pwd
bash: pwd|lftp -u user3 -p 1234 server2: command not found
Большую часть я получил, используя ответ в [этой] [1] ветке - но теперь я застрял.
Может кто-то помочь мне с этим?