ローカルコンピュータでリモートスクリプトを実行する

ローカルコンピュータでリモートスクリプトを実行する

ローカルシステムとリモートシステムの両方がCentos 7システムであり、ローカルシステムでリモートスクリプトを実行すると、スクリプトは/home/user_name/scriptsディレクトリにあります。

次のメッセージが表示されます。

$ ssh [email protected] "bash -s" -- < scripts/machine-info.sh
-bash: scripts/machine-info.sh: No such file or directory

このコマンドを実行すると、予想される結果が返されます。

$ ssh [email protected] 'scripts/machine-info.sh'
date is:  Thu Jul 25 01:43:35 CEST 2019
Hostname is:  linuxtb3
IP address is: 192.168.1.xx

また

$ ssh [email protected] 'bash -s -- < scripts/machine-info.sh'
date is:  Thu Jul 25 01:45:13 CEST 2019
Hostname is:  linuxtb3
IP address is: 192.168.1.xx

このコマンドがこの答えを返すのはなぜですか?

$ ssh [email protected] "bash -s" -- < scripts/machine-info.sh
-bash: scripts/machine-info.sh: No such file or directory

ベストアンサー1

あなたの命令に従って

ssh [email protected] "bash -s" -- < scripts/machine-info.sh

リダイレクトはscripts/machine-info.shローカルで行われます。これはコマンドのリダイレクトでsshあり、データはリモートプロセスの標準入力で終了しますbash -s(ファイルがローカルに存在するが存在しない場合はエラーが発生する理由です)。

示した他の例では、スクリプトはリモートシステムからアクセスされました。

例えば、

ssh [email protected] 'bash -s -- < scripts/machine-info.sh'

コマンド文字列が一重引用符で囲まれているため、リダイレクトはリモートシステムで実行されるコマンドの一部です。

おすすめ記事