Risposte:
È possibile passare al ssh
client un comando da eseguire al posto dell'avvio di una shell aggiungendolo al comando ssh.
ssh username@domain.com 'rm /some/where/some_file.war'
Non è necessario cd
un percorso per rimuovere qualcosa, purché si specifichi il percorso completo, quindi è un altro passaggio che è possibile saltare.
La prossima domanda è l'autenticazione. Se lo esegui, ti verrà richiesta una password. Se non si desidera inserirlo in modo interattivo, è necessario impostare l'autenticazione con chiave pubblica.
-f
alla rm
esecuzione di chiamata remota?
rm
, dovrebbero certamente essere passati al chiamante a meno che l'utente non sappia cosa aspettarsi e perché stiano scavalcando qualcosa. Molti errori e frustranti debug in seguito possono essere evitati utilizzando solo le opzioni necessarie in un determinato senario.
-f
opzione per rm
è abbreviata --force
e ha un effetto sul fatto che gli errori siano indicati per file inesistenti o argomenti fasulli. Di solito i comandi vengono eseguiti su shell non interattive per impostazione predefinita, essendo comunque meno interattivi, ma non lo è o non si riceve un prompt interattivo, la cosa da fare sarebbe correggere le impostazioni direttamente correlate a questo. Se stai scrivendo questo script non dovresti avere quel problema in ogni caso, e se ti trovi in una shell interattiva (dove hai la possibilità di errori di battitura catastrofici) dovresti usare -I
su --interactive=never
per impostare il comportamento desiderato.
Se si desidera eliminare il file remoto con l'uso di sudo, è necessario eseguire qualcosa del genere:
ssh -tt user@host 'stty raw -echo; sudo rm /path/to/file' < <(cat)
Dettagli .
Il comando ssh ha un parametro di comando (ultimo parametro nel comando) che è possibile utilizzare per eseguire comandi remoti.
Imposta le chiavi senza password quindi aggiungi il comando come parte del comando ssh. Vedi: http://www.dotkam.com/2009/03/10/run-commands-remotely-via-ssh-with-no-password/