telnetで接続先の操作方法について

このQ&Aのポイント
  • telnetで接続先の操作方法について
  • visualC++でプログラムを作成し、バッチファイルを呼び出す方法を説明します
  • telnetで接続して(1)は成功するが、(2)と(3)が実行されない問題についてアドバイスを求めています
回答を見る
  • ベストアンサー

telnetで接続先の操作方法について

こんにちは 今、visualC++でプログラムを作っています。 内容はsystem関数を使ってバッチファイルを呼び出すプログラムなのですが int main(void){ system(tel.bat); return 0; } バッチファイルの内容は (1)telnet 192.168.○○○ (2)cd フォルダA (3)test.exe です。 作って実行してみると(1)の接続はできました。ですがその次の(2)、(3)は実行されませんでした。 どうしたらできるのでしょうか?できればtelnetで実行できるようにしたいです。                操作側   接続先 OS:windows7、windowsCE よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

>バッチファイルの内容は >(1)telnet 192.168.○○○ >(2)cd フォルダA >(3)test.exe >です。 >作って実行してみると(1)の接続はできました。ですがその次の(2)、(3)は実行されませんでした。 telnetコマンドが終了するまで、バッチファイルは次の処理に進みません。 サーバ側から切断させればtelnetコマンドが終了しますので、次の行のcdコマンド、およびtest.exeが『クライアントのローカル環境で』実行されます。 そういうバッチファイルになっています。 希望する動作は、telnetで接続して、サーバ側でディレクトリ移動とtest.exeを実行したいのではないですか? telnetコマンドの標準入力に流し込めば動くかと思われますが… # ただし、試したコトはありません。 バッチファイルではなく、CreateProcess()でプロセス起動して、標準入出力のパイプで操作する。 という方法もあります。 「CreateProcess パイプ」辺りで検索すると見つかるでしょう。 http://www.fpcu.jp/dosvcmd/bbs/log/cat1/4-0451.html こんなネタもあります。 他の方法としては…希望する処理を記述したTeraTermマクロを作成して、system()でそのマクロを実行する。 とかですかね。 たぶんこっちの方が簡単でしょう。

708wildcat
質問者

お礼

回答ありがとうございます。 telnetコマンドが終了するまで次の命令に移らないんですね。 勉強になりました。 アドバイスしてくださったのを試してみます。ありがとうございました

関連するQ&A

  • 自動でtelnet

    お世話になります。 ボタンクリックすると自動でTelnetを起動しコマンドを投げてtelnetを終了する...処理を作っています。 telnet接続からの操作はvbsで作成、 そのvbsをbatfileで起動するようにしました。 古いパソコン環境で動かす(32bit)というので、あえてvc++6.0で作成し正常に、動きました。 それを64bitのWindows2012で動かしたら、vbsの中のtelnetの接続のところでエラーになります。  'telnet'は、内部コマンドまたは外部コマンド、  操作可能なプログラムまたはバッチファイルとして認識されていません と、なります。 telnet clientはinstallしてあり、 コマンドプロンプトでbatファイルをたたくとちゃんと正常に動きます。 batファイルをダブルクリックでも動きます。 コマンドプロンプトでcscript xxx.vbs  としても正しく動きます。 プログラムから CreateProcessで、「cmd xxx.bat」としているのですが。。。 どこが間違ってるのか、何がダメなのか判断が付かないのです。 至急アドバイスをいただけないでしょうか。 よろしくお願いいたします。

  • windowsからtelnetでログインし自動処理

    windowsからUNIXサーバーへtelnetでログインし その後、様々な処理を行い、ログアウトするまでの一連の操作をバッチファイル化したいのですが、上手くログインできません。 WINODWSで telnet.batというバッチファイルをダブルクリックするとその中の telnet open 192.168.1.1 user passwd cd usr cp a.tar b tar exit といった処理を実行させたいのですが、 TELNETを呼び出したまでは良かったのですが、 上手くログインできず止っています。 宜しくお願いします。

  • telnetで接続した先のコマンドのバッチファイルを作成したい

    毎回動作確認のため、 1、クライアントPCからサーバへtelnetで接続して、 2、接続後、ログイン、動作確認のコマンドを打ちます。 毎回同じコマンドを打つので、 バッチファイルで対応しようかと思いますが可能でしょうか。 それとも他の別の方法がありますでしょうか。 宜しくお願いします。 1のバッチファイル telnet 192.168.0.2 2のバッチファイル (192.168.0.2のログインユーザ名) (パスワード) (動作確認のコマンド)… のようなイメージかなぁと考えています。 よろしくおねがいします。

  • telnet接続

    ある装置にtelnet接続し、コマンド(ccc dd ee)を送信して帰ってきた値を outou.dat というファイルに保存するプログラムを作っています。 接続すると login: と表示されるので「aaaa」と入力すると Welcome to aaaa > と表示され、「bbbb」と入力するとプロンプトが「#」に変わります。 >bbbb # そこでコマンド「ccc dd ee」を入力したときに帰ってくる応答をファイルに保存します。 #ccc dd ee ------応答データ-------- これを行うのに下記プログラムを実行しましたが、エラーは出ませんがファイルに何も 保存されませんでした。 何がいけないのかわかる方教えてください。 use strict; use Net::Telnet; my $host = '192.168.1.1'; my $login = 'aaaa'; my $enable = 'bbbb'; my $prompt1 = '/>/'; my $prompt2 = '/\S/'; my $telnet = new Net::Telnet( Timeout => 10, ); $telnet->open($host); $telnet->waitfor('/login:/i'); $telnet->print($login); $telnet->waitfor($prompt1); $telnet->print($enable); $telnet->waitfor($prompt2); my @result; $telnet->print("ccc dd ee"); ($result) = $telnet->waitfor($prompt2); open(OUT, "> outou.dat"); print(OUT "@result\n"); close(OUT); $telnet->close;

  • batファイルでのtelnetについて

    お世話になります。題名のとおりtelsetをbatファイルで自動実行したいのですが、こんなことは出来るのでしょうか?ftpはbatファイルで自動実行出来るのですが。 どうしても、telnetでユーザ名等を渡す処理が分かりません。よろしくお願いいたします。

  • Windows7でのtelnet接続について

    Windows7パソコンでのtelnet接続について教えてください。 異なるセグメント間ではtelnetはできないのでしょうか。 10.4.xxx.xxx から 10.6.xxx.xxx に接続しようとしています。 telnetを実行したのですが、下記メッセージが表示されてしまいました。 「ポート番号 23:接続に失敗しました。」 パソコン側では下記の設定をしています。 Windows の機能の有効化または無効化で「Telnetクライアント」と「Telnetサーバー」をチェック Windowsファイアウォールによるプログラムの許可で「Telnet」をチェック サービス一覧で「Telnet」を開始 以上よろしくお願いします。

  • タスクスケジューラでのtelnet実行について

    よろしくお願いいたします。 ネットワーク機器に定期的にログインチェックを行う必要が生じたため、 バッチファイルとVBSを作成し、手動で実行すると問題なく動作しました。 ところがWindowsタスクスケジューラでユーザーがログオフした状態で実行すると 異常終了してしまいました。 処理の流れは以下になります。 (1)バッチファイル起動 (2)バッチファイルが適当な名前を付けたコマンドプロンプトを起動。 (3)バッチファイルがVBSを起動 (4)VBSが(2)で起動したコマンドプロンプトをアクティブにする。 (5)VBSがSendKeysメソッドでコマンドプロンプト上でtelnetを実行 原因が分からず困っています。 ユーザーがログオフしている環境ではtelnetは実行できないものなのでしょうか。 どうぞご教授下さい。

  • 実行結果が表示されません

    今回PHPからCISCOのルータにテルネット経由にてログインしコマンドを実行、実行結果を出力するプログラムを考えています。 一応ログインし、実行しているようですが・・・実行結果が表示されないです。 何かほかに良い方法があればアドバイス等を頂ければと思います。 <?php // Telnet接続 $tel = new Telnet('ホスト名'); if( @!$tel->connect() ) { return 'TELNET_FAIL'; } elseif( @!$tel->login('ユーザー名' , 'パスワード') ) { return 'TELNET_FAIL'; } $tel->setPrompt($host.'#'); $tel->exec("terminal length 0"); $result[0]=exec("show momory statics"); print $result[0]; ?>

    • 締切済み
    • PHP
  • win2008r2 バッチファイル起動しない

    バッチファイルの実行に関して、質問させてください。 現在作成したバッチファイルをWindows7上でうまく動きます(コマンドプロプトン、ダブルクリック、スケジューラ)が、windows 2008R2(AD機能)で起動しないです。コマンドプロプトンで【test.bat】Enterキー押すと”操作可能なプログラムまたはバッチ ファイルとして認識されていません”というメッセージが出ます。環境変数のPATHTEXTに".BAT"の記述はあります。スケジューラで実行されるみたいですが、リターンコードは1で、バッチファイルの内容は実行されていないようです。ダブルクリックしても、ほしい結果がでません。結構困っています。解決方法があれば、ご教授ください。

  • smtpサーバへtelnetログインし、対話形式でメールを送付するところを自動化したい

    「smtpサーバへ、telnetログイン(ポート指定:25)後、対話形式でメールを送付する。」 というのを自動化したいのですが、手動でコマンドを投入する分ではうまく行くのですが、Windowsのバッチファイル(.bat)で実行すると、ログインしたところで止まってしまいます。 どうすればうまくいくでしょうか?