Linuxでリモートsshコマンドを実行する必要があるバッチでスクリプトを作成しようとしています。画面に表示するか、ログに記録できるように、出力を返す必要があります。
PuTTY.exe -ssh user@Host -pw password -m command_run
を試しましたが、画面に何も返されません。
誰もこれを前にやった?
PuTTYの-m
スイッチは、コマンドではなく、スクリプトファイルへのパスを引数として使用します。
リファレンス: https://the.earth.li/~sgtatham/PuTTY/latest/htmldoc/Chapter3.html#using-cmdline-m
そのため、コマンド(command_run
)をプレーンテキストファイル(たとえばc:\path\command.txt
)に保存し、PuTTYに渡す必要があります。
PuTTY.exe -ssh user@Host -pw password -m c:\path\command.txt
ただし、Plink(PuTTYスイートのコマンドライン接続ツール)を使用する必要があることに注意してください。これはコンソールアプリケーションなので、出力をファイルにリダイレクトできます(PuTTYではできません)。
コマンドラインの構文は同じですが、出力リダイレクトが追加されます:
plink.exe -ssh user@Host -pw password -m c:\path\command.txt > output.txt
コマンドライン接続ツールPlinkの使用 を参照してください。
Plinkを使用すると、実際にコマンドラインでコマンドを直接提供できます。
plink.exe -ssh user@Host -pw password command > output.txt
同様の質問:
PuTTYを使用したWindowsからLinuxでの実行コマンドの自動化
バッチファイルからPlinkでコマンドを実行
Bash on Ubuntu on Windows
を直接使用することもできます。例えば。、
bash -c "ssh -t user@computer 'cd /; Sudo my-command'"
以下のマーティン・プリクリルのコメント:
-tは、端末エミュレーションを有効にします。 Sudoのターミナルエミュレーションが必要かどうかは構成によって異なります(デフォルトでは必要ありませんが、多くのディストリビューションはデフォルトをオーバーライドします)。それどころか、他の多くのコマンドには端末エミュレーションが必要です。
別のオプションとして、OpenSSH http://www.mls-software.com/opensshd.html をインストールしてから、単にssh user@Host -pw password -m command_run
編集: ser2687375 からの応答後、インストール時に、クライアントのみを選択します。これが完了すると、コマンドからSSHを開始できるはずです。
次に、次のようなsshバッチスクリプトを作成できます。
ECHO OFF
CLS
:MENU
ECHO.
ECHO ........................
ECHO SSH servers
ECHO ........................
ECHO.
ECHO 1 - Web Server 1
ECHO 2 - Web Server 2
ECHO E - EXIT
ECHO.
SET /P M=Type 1 - 2 then press ENTER:
IF %M%==1 GOTO WEB1
IF %M%==2 GOTO WEB2
IF %M%==E GOTO EOF
REM ------------------------------
REM SSH Server details
REM ------------------------------
:WEB1
CLS
call ssh [email protected]
cmd /k
:WEB2
CLS
call ssh [email protected]
cmd /k