ローカルシステムとリモートシステムの両方が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'
コマンド文字列が一重引用符で囲まれているため、リダイレクトはリモートシステムで実行されるコマンドの一部です。