0

シェルスクリプトを介してリモートマシンにログインしています(スクリプトにsshコマンドを配置することにより)。ssh コマンドの後、スクリプトの残りの行は、リモート マシンではなく現在のマシンで実行されます。残りのシェル スクリプト行をリモート マシンで実行する方法。

これが私のスクリプトだとしましょう

ssh username@ip-address 
ls
whoami
----

ssh の後の残りの行は、現在のマシンではなくリモート マシンで実行する必要があります。これを達成する方法は?

4

4 に答える 4

2

heredoc考えられる解決策の 1 つは、次の例のように asを使用することです。

$ ssh example.foo.com -- <<@@
> ls /etc/
> cat /etc/passwd
> @@

基本的に、最初の行と最後の行の @@ の間のすべてがリモート マシンで実行されます。

ファイルの内容を変数に読み込むことで、ファイルの内容を使用することもできます。

$ MYVAR=`cat ~/foo.txt`
$ ssh example.foo.com -- <<@@
> $MYVAR
> @@

または、ヒアドキュメント内で同じアクションを実行するだけです:

$ ssh example.foo.com -- <<@@
> `cat ~/foo.txt`
> @@
于 2013-10-09T07:17:24.697 に答える
0

ssh -t user@remotehost 'uptime' user@remotehost's password: 23:35:33 up 2:05、3 ユーザー、負荷平均: 0.79、0.52、0.60 リモートへの接続が閉じられました。

-t を指定すると、リモート マシンでターミナルを開き、コマンドを実行します。

于 2014-01-06T18:07:07.497 に答える
0

sshオプションを指定してコマンドを使用し-tます。例えば:

ssh -t myremotehost 'uptime'
name@myremotehost's password: 
10:14:14 up 91 days, 21:20,  5 users,  load average: 0.20, 0.35, 0.36
于 2013-10-09T07:17:08.727 に答える