68013


複数のサーバのソースをアップデート（データの入れ替え）をするため、以下のようなシェルスクリプトを作りました。

[code]

    #リモート先へシェル転送
    cat /var/tmp/remote.sh | ssh ユーザ@ホスト 'cat > /var/tmp/remote.sh'
    #転送したシェルを実行
    ssh ユーザ@ホスト chmod u+x ./remote.sh | ./remote.sh
    
[/code]

これでリモート先で動作はするのですが、エラーログは誤情報を吐きます。  
ローカル入っていないが、リモート先で入っているnode.jsのコマンドが見つからないとログでは言われていながら、実行されていたり、データのコピーも出来ないと言われながらされていたりします。

以下のようなコマンドで直接sshログインしてからシェルを実行すると正常なログが出ます。

[code]

    ssh ユーザ@ホスト
    ./remote.sh
    
[/code]

リモート先のシェルスクリプト実行でログを正常に出すにはどうすればよいのでしょうか？


CC BY-SA 4.0
2020-06-26T02:28:13.430
68010
2020-06-26T04:07:11.040
2020-06-26T04:07:11.040
3060
36855
question
shellscript ssh
リモート先シェルスクリプト起動してもログが誤情報を吐き出す。


> ssh ユーザ@ホスト chmod u+x ./remote.sh | ./remote.sh

だと「./remote.sh」がローカル側で実行されてしまっていると思います。

> ssh ユーザ@ホスト 'chmod u+x ./remote.sh | ./remote.sh'

とすべきではないでしょうか？  
あと、途中のパイプも不要な気がするので

> ssh ユーザ@ホスト 'chmod u+x ./remote.sh && ./remote.sh'

のような感じになるのではないでしょうか？


CC BY-SA 4.0
2020-06-26T02:50:40.417
68013
2020-06-26T02:50:40.417
30745
68010
answer