Eu quero executar comandos depois de logar no servidor remoto usando shh

0
#! /bin/bash
read -p 'Username: ' user
read -p 'IP: ' ip

ssh "$user"@"$ip"

osascript -e ' tell app "System Events" to display "Hello world"'

Este arquivo será executado automaticamente, então não é como se eu estivesse executando o comando após o comando

Ele não executa o último comando e não sei por que

Isso é terminal no mac

    
por Chad McMillin 18.02.2015 / 04:29

2 respostas

1

Eu não sei exatamente como o ssh opera, mas o seu script está escrito de uma forma que ele irá esperar até que o comando ssh finalmente termine. Em seguida, ele continuará e executará sua última linha (osoftware ...). Para evitar que o ssh retorne, escreva um & no final da linha ssh. Ele terá o intérprete para continuar executando o próximo comando em um thread paralelo.

    
por Byte Commander 18.02.2015 / 04:46
1

Seu último comando,

osascript -e ' tell app "System Events" to display "Hello world"'

será executado somente se você sair do terminal ssh remoto. Desta forma você não pode conseguir o que você está tentando fazer.

Espero que espere um script . Você pode trabalhar com o seguinte script,

#!/bin/sh
expect <<'END'
set timeout 10
set login "your_username" 
set addr "remote_ip"
set pw "your_password"             # skip this line if you have password less login
spawn ssh $login@$addr
expect "$login@$addr's password:"  # skip this line if you have password less login
send -- "$pw\r"                    # skip this line if you have password less login
expect "~"                         # use your prompt here, I have ~, replace ~ with your prompt
send -- "ls\r"                     # replace ls with your command
expect "~"
send -- "exit\r"
expect eof
END

Veja Como executar o sudo comandos com Expect & amp; enviar comandos no script bash?

    
por souravc 18.02.2015 / 06:42