2017-09-12 10 views
-1

このssh呼び出しをLinuxの "tstz"という名前のシェルスクリプトに置き、linux "at"コマンドで呼び出して、後で実行するようにスケジュールします。コマンドでLinux/Unixを使ってSSHを実行する

TSTZスクリプト:コマンドの構文で

#! /bin/ksh 
/usr/bin/ssh -tt <remote windows server> pmcmds ${fl} ${wf} </dev/null>/tmp/test1.log 2>&1 

:予想通り

-f TSTZでは現在、+ 1分

sshのコールがリモートコマンドを実行しますが、ssh接続は、直前に閉じリモートコマンドが完了しました。私は、リモートコマンドが完了するまで開いたままにして、終了ステータスを持つtstzスクリプトに制御を戻すための接続が必要です。

これは私が/tmp/test1.logで取得エラーです:

のtcgetattr:デバイス ^ [[2JConnection閉じdc01nj2dwifdv02.nj.core.himするための不適切なioctlの^ M

注:atコマンドを使用してtstzをスケジュールするとき、-ttを使用しないと、sshコマンドはリモートコマンド "pmcmds $ {fl} $ {wf}"を実行しません。私はこれがターミナルが必要なためだと信じています。しかし、私はtstzをsshコマンドラインで-ttなしでフォアグラウンドのLinuxコマンドプロンプトから実行することができ、それは期待どおりに実行されます。

ご協力いただければ幸いです。ありがとう!

+0

コード/データの前に4つの空白を付けます。 [edit-help](http://stackoverflow.com/editing-help)を見てください。 – Cyrus

+0

/usr/bin/ssh -tt <リモートWindowsサーバー> pmcmds $ {fl} $ {wf} < /dev/null > /tmp/test1.log 2>&1 – Gary

+0

リダイレクトはローカルシェルによって処理されています。あなたのコマンドで必要なものをリモートシェルで実行するために必要なものを1つまたはdbl引用するので、リモートシェルへのコマンドとみなされます。がんばろう。 – shellter

答えて

0

私は、LOCALマシンではなくサーバーに正常に接続した後で、REMOTEマシンで実行するコマンドを指定する必要があることを理解しています。

私は多分

、だから、コマンド

ssh -i "key.pem" [email protected] -t 'command; bash -l -c "sudo su"'  

独自のコマンドで "sudoのsuコマンドを" 置き換えるべきところ、私は "pmcmds DFD_ETIME wf_TESTa" と推測

を以下、発行しようとする使用

PS私はgoogleで興味深いサービスを発見した "explainhell" 私を理解するのを助けた "コマンド;"キーワードは引用符の中で重要です。

関連する問題