Como executar um comando específico a partir do shell script

0

Eu tenho abaixo o script shell , no qual eu estou logado na máquina em particular, agora eu tenho que executar um comando após o login, este comando irá iniciar / parar / status do processo particular.

 #!/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

como eu posso fazer isso?

    
por Bhushan Patil 15.09.2015 / 06:40

2 respostas

3

Você pode usar

ssh user@hostname "command"

Isto irá abrir uma conexão ssh e executar o comando. Você será solicitado a fornecer uma senha, se necessário.

Se você quiser fazer isso automaticamente (não quer inserir sua senha toda vez), você deve habilitar um login com uma chave ssh-pub.

    
por Wayne_Yux 15.09.2015 / 07:42
0

Quando a instância interativa ssh é gerada, ela assume a instância atual de bash e os seguintes comandos não são executados até que ela tenha terminado sua execução.

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

Existem várias maneiras de resolver isso:

  1. Passar o (s) comando (s) como um argumento: 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. Agrupe os comandos em outro script e passe o script usando stdin redirection:
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 % 
    
por kos 15.09.2015 / 08:03