こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

batファイルでtelnetを起動⇒文字コードをセット⇒ログイン としたいです。

XPで、Red Hat Linuxサーバにtelnetログインをしています。

C:\WINDOWS\system32\telnet.exeのショートカットをデスクトップに作成し、
1.telnet.exeのショートカットをダブルクリック
2.set CODESET Japanese EUC を設定(文字化けを防ぐため)
3.open 192.168.xx.xx

として、ログインしているのですが、batファイル化したいです。
login.batを作成し、
 telnet 192.168.xx.xx
 pause
と二行だけ記入しておき、login.batをダブルクリックすると、
 Red Hat Linux ...
 Kernel ....
 login:
と表示され、ユーザー名とパスワードでログインできるのですが、
set CODESET Japanese EUC
を設定してからログインするようにするやり方がわかりません。。

リダイレクトやパイプなども調べてみていろいろ試したのですが、できませんでした。

どなたがms-dosに詳しい方、ご教授お願いいたします。

※後学のために、もし、ユーザー名、パスワードもbatファイルに含めることができるのでしたら、その方法も知りたいです。

※イントラの閉鎖されたネットワークで座席fixでの研修作業なので、sshでないtelnetはやめようとか、batファイルにパスワードまで記述してしまうのは脆弱すぎるとかのご指摘は申し訳ありませんがご遠慮願います。

よろしくお願いいたします。

投稿日時 - 2008-03-24 11:48:27

QNo.3890078

すぐに回答ほしいです

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

SendKeysを用いた方法が下記ページに^^;
http://www.fpcu.jp/dosvcmd/bbs/log/cat1/4-0451.html
けど、使い勝手を考えると・・・

Poderosaで接続ショートカットを保存する方法はどうでしょうか?
http://ja.poderosa.org/
接続するたびにパスフレーズを入力するのが面倒です
http://ja.poderosa.org/faq/15.html

投稿日時 - 2008-03-24 14:27:17

補足

ご回答ありがとうございます。
長くなりましたので、補足欄にて失礼します。

SendKeysの方法を試してみましたところ、できました!

参考・備忘録・後学までに、スクリプトをコピペしておきます。

紹介いただいたサイトより
↓引用----------------------------------------------------------
rshが使えない環境だとすると、telnetで、VBS+WSH の sendkeys を使うくらいでしょうか。キー入力のシミュレーションなんでエラーや想定外の事象にはとても弱いです。サンプルは、
-----------testtelnet.bat------------------
start "ABC"
cscript testtel.vbs
-------------------------------------------

-----------testtel.vbs---------------------
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate "ABC"
WScript.Sleep 3000
WshShell.SendKeys "telnet ホスト名~"
WScript.Sleep 3000
WshShell.SendKeys "ユーザー名~"
WScript.Sleep 3000
WshShell.SendKeys "パスワード~"
WScript.Sleep 3000
WshShell.SendKeys "コマンド~"
WScript.Sleep 3000
WshShell.SendKeys "exit~"
--------------------------------------------
sleepの単位はミリ秒です。適宜調整ください。
一部の記号や特殊キーについては下記参照。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/wsmthsendkeys.asp

なお、tlntadmn は windows上のtelnetサーバーにログインする設定の変更コマンドなので今回は関係ありません。
↑引用----------------------------------------------------------

です。
私が作成したのは、

login.bat
-------------------------------
start "ABC"
cscript tellogin.vbs
-------------------------------

tellogin.vbs
-------------------------------
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate "ABC"
WshShell.SendKeys "C:\WINDOWS\system32\telnet.exe~"
WScript.Sleep 1000
WshShell.SendKeys "set CODESET Japanese EUC~"
WScript.Sleep 1000
WshShell.SendKeys "open 192.168.xx.xx~"
WScript.Sleep 1000
WshShell.SendKeys "ユーザ名~"
WScript.Sleep 1000
WshShell.SendKeys "パス~"
-------------------------------

になります。
VBS+WSHは無知なので調べました。

start "ABC" については、サイトより、
「testtelnet.bat から start "ABC" であらたにABCというタイトルのコマンドプロンプト画面を開いて、AppActivate で、ABCというタイトルのウィンドウをアクティブにし、そこにsendkeysする」方法とのこと。

ccsriptについては、Windowsのコマンドで、
cscript  指定したスクリプトの実行
とのこと。

WshShell.SendKeys "パス~" ←最後のチルダが意味不明だったのですが、
http://www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_04.html
運用 Windows管理者のためのWindows Script Host入門
キー SenKeysメソッドのパラメータ
Enter {ENTER} または ~
とありました。

以上、自分への説明です^^;


また、Poderosaについては、
>Telnet,SSH1,SSH2 はもちろん、ローカルの Cygwin シェルもサポートしています。
おおっ、Cygwinも!

>未踏ソフトウェア創造事業
Lunascapeと同じで、発展して会社にまでなるかも…。。

と、いろいろ驚きでした。こちらは自宅マシンにて試させていただきます。

みなさま、大変参考になるご回答をいただき、ありがとうございました。
m(_ _)m 感謝!!!

投稿日時 - 2008-03-24 15:12:26

お礼

ポイントについて。

ポイントにつきましては、
20:ズバリの回答者様
10:上記を除き、一番勉強になった回答者様

とさせていただきます。

みなさま、ご回答ありがとうございましたっm(_ _)m

投稿日時 - 2008-03-24 15:16:16

ANo.4

このQ&Aは役に立ちましたか?

13人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

「リダイレクトやパイプなども調べてみていろいろ試した」とあり、確認はしていませんが,

------------------------------------------------------------
login.bat
------------------------------------------------------------
telnet 192.168.xx.xx


------------------------------------------------------------
login.doc
------------------------------------------------------------
set CODESET Japanese EUC
open 192.168.xx.xx

を準備し、
login.bat < login.doc
は、確かめたでしょうか。

・ pauseは不要だと思われますが。

・ もしうまくいけば、

------------------------------------------------------------
login.doc
------------------------------------------------------------
set CODESET Japanese EUC
open 192.168.xx.xx
ユーザー名
パスワード
------------------------------------------------------------

も確かめてみたいところです。

投稿日時 - 2008-03-24 12:27:57

お礼

ご回答ありがとうございます。

>login.bat < login.doc
というのは、login.batとlogin.docを用意し、それとは別にコマンドプロンプトを立ち上げて実行、ということでよいのでしょうか。

login.bat
-------------------------------
telnet 192.168.xx.xx
pause
-------------------------------

login.txt
-------------------------------
set CODESET Japanese EUC
open 192.168.xx.xx
-------------------------------

を用意してdos窓で
C:~\デスクトップ>login.bat < login.txt

を試してみましたが、
C:~\デスクトップ>
の状態に戻るだけでダメでした。


また、他サイトを参考に、
login.bat
-------------------------------
telnet < login.txt
pause
-------------------------------

login.txt
-------------------------------
set CODESET Japanese EUC
open 192.168.xx.xx
-------------------------------

で、login.batを実行も試してみましたが、
続行するには何かキーを押してください . . .

と表示されるだけでダメでした。

※pauseコマンドは、batファイルを実行したときに一瞬でdos窓が閉じてしまうので、エラーの内容がわからないため追加しました。


もし、私の理解が間違っていましたら、ご指摘をお願いいたします。

投稿日時 - 2008-03-24 14:31:01

ANo.2

Windows標準の telnet クライアントではなく、TeraTerm などの別のアプリケーションの利用では、ダメですか?

http://www.stackasterisk.jp/tech/systemManagement/teraterm01_04.jsp

投稿日時 - 2008-03-24 12:20:56

お礼

ご回答ありがとうございます。

Terattermなどなら、sshで通信の暗号化もできるし(といっても閉鎖ネットワークで、個人情報は言語研修で使う範囲、研修用ログインID、パスくらいしか含まれていないので、情報漏えい的観点からはセキュリティは考慮しなくてもよいのですが)、フリーソフトだし、と思うのですが、
「できるだけ、ソフトをインストールすることは控えるように(OSをインストールした直後の環境を保持するように)」
との上長のお達しなので、自分の勉強も兼ねてbatファイルで作成できないかと思い、質問させていただきました。

投稿日時 - 2008-03-24 14:17:24

ANo.1

DOSのバッチファイルはDOSレベルでのコマンドしか制御できません。
TelnetはDOS上で動くアプリなのでtelnet.exeが起動した時点でバッチファイルの制御から外れてしまいます。
telnetが終わったあとの制御は可能です。

要はtelnet上のコマンド入力はバッチファイルでは不可能です。

かわりにtelnetにスイッチをつけてバッチファイルに組み込めば良いのです。

telnet <IPアドレス> でopenなしでいきなり接続に行くはずです。
    ↑<>はいりません。

投稿日時 - 2008-03-24 12:17:35

お礼

ご回答ありがとうございます。
>DOSのバッチファイルはDOSレベルでのコマンドしか制御できません。
>TelnetはDOS上で動くアプリなのでtelnet.exeが起動した時点でバッチファイルの制御から外れてしまいます。

batファイルで制御できない理由がとてもわかりやすく、勉強になりました。

投稿日時 - 2008-03-24 14:08:46

あなたにオススメの質問