Ich denke, es hat mehr damit zu tun, wie die Optionen von der Shell analysiert werden. Das funktioniert zum Beispiel:
$ ssh root@server /bin/sh -c '"cd /boot && ls -l"'
Dies hat das gleiche Problem wie Ihr Befehl:
$ ssh root@server /bin/sh -c 'cd /boot && ls -l'
Wenn Sie den -v
Schalter auf aktivieren , können ssh
Sie sehen, was los ist:
1. Befehl:
debug1: Sende Befehl: / bin / sh -c "cd / boot && ls -l"
2. Befehl:
debug1: Sende Befehl: / bin / sh -c cd / boot && ls -l
In der Regel müssen Sie beim Senden von Befehlen ssh
die Anführungszeichen und Zeilenumbrüche in Anführungszeichen besonders beachten, da die verschiedenen Ebenen sie entfernen. Auch nicht die Mühe machen, zu senden /bin/sh
.
Sie können sehr nützliche Dinge tun, wenn Sie ssh
die folgenden Zitate verstanden haben . Dadurch wird der Befehl auf dem Remote-Server ausgeführt, die Ergebnisse werden jedoch lokal in einer Datei auf dem System gesammelt, auf dem Sie den ssh
Befehl ausgeführt haben:
$ ssh root@server 'free -m' > /tmp/memory.status
Oder hier, wo Sie ein Verzeichnis auf einem Remote-Server tarieren und es auf dem lokalen System erstellen:
$ ssh remotehost 'tar zcvf - SOURCEDIR' | cat > DESTFILE.tar.gz
Verweise
ssh root@server /bin/sh -c "ls -l /boot"
?