Я думаю, це має більше спільного з тим, як параметри розбираються оболонкою. Наприклад, це працює:
$ ssh root@server /bin/sh -c '"cd /boot && ls -l"'
Це те саме питання, що і ваша команда:
$ ssh root@server /bin/sh -c 'cd /boot && ls -l'
Якщо ввімкнути -v
перемикач, ssh
ви можете побачити, що відбувається:
1-а команда:
debug1: команда надсилання: / bin / sh -c "cd / boot && ls -l"
2-а команда:
debug1: команда надсилання: / bin / sh -c cd / boot && ls -l
Як правило, при надсиланні команд через ssh
вас потрібно звернути особливу увагу на котирування та загортати лапки в лапки, коли різні шари знімають їх. Також не турбуйтеся надсилати /bin/sh
.
Ви можете зробити дуже корисну річ, коли зрозумієте цитування ssh
наступних. Це запустить команду на віддаленому сервері, але збирає результати у файл локально в системі, де ви запустили ssh
команду:
$ ssh root@server 'free -m' > /tmp/memory.status
або це, де ви орієнтуєте на каталог на віддаленому сервері та створюєте його в локальній системі:
$ ssh remotehost 'tar zcvf - SOURCEDIR' | cat > DESTFILE.tar.gz
Список літератури
ssh root@server /bin/sh -c "ls -l /boot"
?