Как выполняют определенную команду из сценария оболочки

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

 #!/usr/bin/expect -f
    spawn ssh root@hostname
    expect "Password:"
    send "password123\r"
    interact  # here it is successfully login into machine, 
    sleep 2
    /sbin/service heartbeat status # I want to execute this command

как я могу сделать это??

0
задан 15 September 2015 в 09:43

2 ответа

Можно использовать

ssh user@hostname "command"

, Это откроет соединение SSH и выполнит команду. Вам предложат пароль при необходимости.

, Если Вы хотите сделать это автоматически (не хотят вводить Ваш пароль каждый раз), необходимо включить вход в систему с ssh-pub-key.

3
ответ дан 1 October 2019 в 01:40

Однажды интерактивное ssh экземпляр порожден, он принимает ток bash экземпляр, и следующие команды не выполняются, пока он не закончил свое выполнение.

user@user-X550CL ~ % ssh user@localhost; echo string
user@localhost's password: 
Welcome to Ubuntu 15.04 (GNU/Linux 3.19.0-15-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Tue Sep 15 09:10:01 2015 from localhost
user@user-X550CL ~ % exit
Connection to localhost closed.
string

существует несколько способов решить это;

  1. Передача команда (команды) как аргумент: spawn ssh root@hostname /sbin/service heartbeat status
user@user-X550CL ~/tmp % ssh user@localhost echo command1
user@localhost's password: 
command1
user@user-X550CL ~/tmp % ssh user@localhost 'echo command1; echo command2; echo command3'
user@localhost's password: 
command1
command2
command3
user@user-X550CL ~/tmp % 
  1. Группа команда (команды) в другой сценарий и передачу сценарий с помощью stdin перенаправление:
user@user-X550CL ~/tmp % ssh user@localhost <script.sh 
Pseudo-terminal will not be allocated because stdin is not a terminal.
user@localhost's password: 
Welcome to Ubuntu 15.04 (GNU/Linux 3.19.0-15-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

command1
command2
command3
user@user-X550CL ~/tmp % 
0
ответ дан 1 October 2019 в 01:40

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

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