
SSHでwindowsサーバに接続して、OSコマンドを自動実行してクライアントにアウトプットを取得したいと思っておりますがうまくコマンドが実行できません。
以下環境とやりたいことです。
<環境>
Windowsサーバ(ssh server): WindowsXP OpenSSHインストール済み
クライアント(ssh client): WindowsXP
※Windowsサーバとクライアントは公開鍵認証でパスワードなしでsshコマンドでクライアントからサーバにログインできるようになっています。
<やりたいこと>
クライアントからsshで定期的にWindowsサーバログインしてサーバ上のファイル情報を取得したいので、以下のようなコマンドとクライアントから定期実行しようと考えてます。
例:
ssh -i id_dsa username@server dir
しかし、sshで一度サーバにログインしてからだと普通どおりにコマンド実行できるのですが、sshでコマンドを渡す場合には、c:\windows\system32\command.comを記述する必要があるようで、実際には、
ssh -i id_dsa username@server c:/windows/system32/command.com dir のように指定しています。
ここからが質問です。
Q.このとき、dirコマンドの引数にファイルを指定しても、"ファイルが見つかりません"のエラーになってしまいます。
コマンド例:
ssh -i id_dsa username@server c:/windows/system32/command.com dir filename
出力例:
--------------------------------------------------
ドライブ C: のボリュームラベルは XXXXXX
ボリュームシリアル番号は XXXXX
ディレクトリは XXXXXX
ファイルが見つかりません.
---------------------------------------------------
SSHサーバがLinux/Unixの場合は特に問題なくコマンドが実行できたのですが、Windowsの場合にはどのようにコマンドを指定すればよいのでしょうか?
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
カレントディレクトリにファイルがないのでしょう。
dirコマンドは内部コマンドなので、command.comかcmd.exeの上で動作します。
SSHで接続した場合に、どこがカレントディレクトリになっているのか不明ですが……
一連の操作(カレントドライブ、カレントディレクトリの変更、dirコマンドの実行)をするbatファイルを作成して、
そのbatファイルをフルパスで指定してみる…というのはどうでしょうか?
# SSHでLinuxに接続したことはありますが、Windowsには接続したことないのでちょっとイメージが…
この回答への補足
回答ありがとうございました。まったく見当がつかずに困っていたのですが前進しました。
テストしているWindowsのOpenSSHではWindowsのsshサーバに接続した場合でもカレントディレクトリは接続したユーザのホームディレクトリになります。(実際には"HKEY_LOCAL_MACHINE\SOFTWARE\Cyguns Solutions\Cygwin\mount v2\/home"で指定されたディレクトリに作成される各ユーザディレクトリです。)
ここに教えて頂いたように"一連の操作(カレントドライブ、カレントディレクトリの変更、dirコマンドの実行)をするbatファイルを作成して、そのbatファイルをフルパスで指定してみる" という手順で動作いたしました。
<例>
ssh -i id_dsa user@sshsever "c:/windows/system32/cmd.exe /c c:/user/test.bat
※test.batの中にdirコマンドとファイル名を記述
しかし、sshクライアントから実行されるコマンドは変更される可能性があるため、本当はWindowsのsshサーバ上にはこのようなファイルを作成して予め配置しなくても実行できるようにしたいと考えています。
Windowsの制限であれば仕方ないのですが、なにかよい方法がございましたらご教授ください。
私のdirコマンドの引数でのファイルの指定方法に問題があったようです。
以下のようにdirコマンド後のファイル指定で\を3つ続けて\\\にしてみたところうまく動作しました。
<例>
C:\\\directory1\\\filename
sshで指定する際の特殊文字の解釈の問題だったようです。
最終的にはこのような指定になりました。
ssh -i id_dsa user@sshserver c:/windows/system32/cmd.exe /c dir c:\\\directory\\\filename
この方法でうまくいきそうですのでテストしてみます。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- UNIX・Linux リナックスのリモート接続の際に使う sshコマンドについて 1 2022/11/21 19:46
- UNIX・Linux ubuntuに外部侵入できるか 2 2022/04/09 12:48
- サーバー ログオンユーザーがいない場合に自動再起動 1 2022/09/28 09:53
- UNIX・Linux Linux(fedora)でホスト名について 2 2022/06/21 14:24
- UNIX・Linux linuxサーバーのキャッシュをクリアするコマンドを実行したい。 5 2023/01/24 14:52
- その他(コンピューター・テクノロジー) (コマンドプロンプト)コマンドプロンプトのactiveについて 2 2022/07/16 17:21
- その他(データベース) AWSのcloud9で「 ls -l ~/.ssh/」のコマンドで公開鍵、 秘密鍵を知ろうとすると「 1 2023/07/09 02:10
- オープンソース gmailでのimap設定 1 2022/09/15 13:25
- ノートパソコン ESETの初期インストールの仕方 1 2022/10/14 08:26
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイル 文字列にスペ...
-
コマンドプロンプトをクリック...
-
SSH接続でwindowsサーバのコマ...
-
バッチ終了時にDOS窓を閉じるコ...
-
make test って何をするための...
-
FTPの連続実行でフリーズする
-
バッチファイルで文字列の検索...
-
コマンドプロンプトで、特定の...
-
バッチファイルでディスク容量...
-
バッチファイルを使ってテキス...
-
シェルの「:コマンドが見つか...
-
ショートカットをデスクトップ...
-
DOSの終了
-
行単位で並び替えて、重複行を...
-
2つ目の「pause」は無効?
-
シェルスクリプト(.sh)で、10進...
-
ftpコマンド出力結果の取得
-
Rubyを使っての tar.gz ファイ...
-
困っています
-
VisioのVBAでユーザにファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
バッチファイル 文字列にスペ...
-
make test って何をするための...
-
シェルの「:コマンドが見つか...
-
コマンドプロンプトをクリック...
-
ftpコマンドを実行すると「425 ...
-
findstrでヒットした1行前の文...
-
ショートカットをデスクトップ...
-
バッチファイルを使ってテキス...
-
Pythonで単純にファイルを結合...
-
フォルダ、ファイル操作に最適...
-
ftpコマンド出力結果の取得
-
シェルスクリプト内のcdで、カ...
-
AccessVBAで実行時間を指定する...
-
powershellでlinuxのduコマンド...
-
SSH接続でwindowsサーバのコマ...
-
FTPの連続実行でフリーズする
-
コマンドプロンプトとCygwinの違い
-
Windowsのバッチ(bat)ファイル...
-
xCopyコマンドでネットワークご...
おすすめ情報