PDA

View Full Version : Comandi SSH su Host Remoto


Sn1per
19-02-2015, 19:34
Salve a tutti. Allora il mio problema è questo: come faccio a far eseguire da un .command locale uno script in remoto invece che sempre da locale?

Esempio .sh locale:

Dato .command in locale
Dato .sh locale

#!/bin/bash#

echo -n -e "\033]0;TEST\007"

{
ssh nome@IP "$(< /Users/Utente/Desktop/TEST.sh)"
}

osascript -e 'tell application "Terminal" to quit' &
exit

Così funziona da locale. Ma se il file .sh fosse ad un URL? Come posso fare? Così non funziona:

Dato .command in locale
Dato .sh ad URL http://TEST.sh

#!/bin/bash#

echo -n -e "\033]0;TEST\007"

{
ssh nome@IP "$(< http://TEST.sh)"
}

osascript -e 'tell application "Terminal" to quit' &
exit

Ci sarebbe poi un'ultima domanda: si può evitare di dover mettere la password ogni volta ed inserirla nel .command?

Sn1per
19-02-2015, 19:53
edit doppio

OoZic
20-02-2015, 00:55
lo devi scaricare ed eseguire


curl http://www.miosito.it/script.sh | sh


per quanto riguarda ssh senza mettere la password da quel che vedo puoi fare cosi
http://stackoverflow.com/questions/16928004/how-to-enter-ssh-password-using-bash

ma molto meglio usare una ssh-key a questo punto, piu' comoda e piu' sicura della password.

Sn1per
21-02-2015, 13:17
Grazie OoZic ma il problema è che quel comando curl non lo esegue per come è impostato lo script.

#!/bin/bash#

echo -n -e "\033]0;TEST\007"

{
ssh nome@IP "$(< curl http://www.miosito.it/script.sh | sh)"
}

osascript -e 'tell application "Terminal" to quit' &
exit

Ho trovato poi il modo di far immettere la password direttamente ma come unisco i due script in uno solo?

Questo (e funziona perfettamente con un .command)

#!/usr/bin/expect -f
spawn ssh root@IP
expect "assword:"
send "mia password\r"
interact

con questo (che però non va se non con un file locale)

#!/bin/bash#

echo -n -e "\033]0;TEST\007"

{
ssh nome@IP "$(< curl http://www.miosito.it/script.sh | sh)"
}

osascript -e 'tell application "Terminal" to quit' &
exit

Perché il problema è questo: se io invio il comando ssh e poi do il comando curl non funziona perché è come se dopo aver fatto l login sul server non vedesse più i comandi successivi; la cosa l'ho risolta con questo ssh nome@IP "$(< /Users/Utente/Desktop/TEST.sh)" che però va solo in locale. In più non riesco ad unire i due script in modo che funzionino.

I problemi sono quindi due:
- far eseguire uno script non locale ma remoto
- unire i due script di modo che non mi richieda la password (il secondo la richiede)

forse questo potrebbe essere utile ma come lo adatto al mio caso?

http://stackoverflow.com/questions/22147566/expect-script-for-remote-ssh-login-and-executing-commands