オプションがシェルによってどのように解析されるかに関係があると思います。たとえば、これは機能します:
$ ssh root@server /bin/sh -c '"cd /boot && ls -l"'
これには、コマンドと同じ問題があります。
$ ssh root@server /bin/sh -c 'cd /boot && ls -l'
-v
スイッチを有効にすると、ssh
何が起こっているのかを確認できます。
最初のコマンド:
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
または、リモートサーバー上のディレクトリをtarし、ローカルシステムで作成する場合:
$ ssh remotehost 'tar zcvf - SOURCEDIR' | cat > DESTFILE.tar.gz
参照資料
ssh root@server /bin/sh -c "ls -l /boot"
ですか?