2016-02-06 2 views
0

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

Я сделал сценарий, и на самом деле он работает:

#!/bin/bash 
USERNAME=KRUNAL 
IP=10.61.162.241 
ssh -l ${USERNAME} ${IP} "pwd " 
ssh -l ${USERNAME} ${IP} "ls -la" 
ssh -l ${USERNAME} ${IP} ./a.out 

У меня есть проблема, что если предположить, что я сделал сценарий

ssh -l ${USERNAME} ${IP} "pwd " # this execute in remote system 
ls -la # this execute in current system. 

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

+2

Пожалуйста, обратите внимание на [редактирование-помощь] (HTTP: // стек overflow.com/editing-help). – Cyrus

ответ

1

Вы можете отправить столько команд ssh, сколько захотите, при условии, что вы их разделите ; или linebreaks. Так что это должно сработать:

ssh -l ${USERNAME} ${IP} "pwd; ls -la" 
+0

спасибо, что он работает. – Krunal

0

@ Предложение Жоао прекрасно работает, однако его нецелесообразно при написании многих строк.

Если это так, вы можете сделать

ssh -1 ${USERNAME} ${IP} bash << 'EOF' 
    cd /some/directory 
    ./a.out 
    who am i 
    for i in `seq 1 10` 
    do 
     echo $i 
    done 
EOF 

Все, что между «EOF» и будет выполняться на стороне сервера конечного EOF. Вы можете также заменить bash с csh или python и писать код для этого переводчика вместо

Если вы хотите выход SSH сессии хранится в файле (скажем Session.log), а затем заменить

ssh -1 ${USERNAME} ${IP} bash << 'EOF' 

с

ssh -1 ${USERNAME} ${IP} bash << 'EOF' > 'session.log' 

остальное остается неизменным

+0

Что делать, если я хочу выполнить ./a.out в удаленной системе, и я увижу весь оператор printf, запущенный в моей текущей системе (если возможно, он сделает в нем новый терминал и a.out). так же, как я хочу xterm в удаленной системе. – Krunal

+0

Благодарим вас за первый ответ – Krunal

+0

Нет проблем! Я обновил ответ, позвольте мне, если это поможет – Ramast

Смежные вопросы