ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:miraise 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ファイルにパスワードまで記述してしまうのは脆弱すぎるとかのご指摘は申し訳ありませんがご遠慮願います。

よろしくお願いいたします。
質問投稿日時:08/03/24 11:48
質問番号:3890078
この質問に対する回答は締め切られました。
最新から表示回答順に表示良回答のみ表示

回答

良回答20pt

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

Poderosaで接続ショートカットを保存する方法はどうでしょうか?
http://ja.poderosa.org/
接続するたびにパスフレーズを入力するのが面倒です
http://ja.poderosa.org/faq/15.html
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/03/24 14:27
回答番号:No.4
この回答への補足ご回答ありがとうございます。
長くなりましたので、補足欄にて失礼します。

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/...

なお、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 感謝!!!
この回答へのお礼ポイントについて。

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

とさせていただきます。

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

回答

 

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

------------------------------------------------------------
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
ユーザー名
パスワード
------------------------------------------------------------

も確かめてみたいところです。
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:08/03/24 12:27
回答番号:No.3
この回答へのお礼ご回答ありがとうございます。

>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窓が閉じてしまうので、エラーの内容がわからないため追加しました。


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

回答

 

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

http://www.stackasterisk.jp/tech/systemManagement/teraterm01_04.jsp
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/03/24 12:20
回答番号:No.2
この回答へのお礼ご回答ありがとうございます。

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

回答

良回答10pt

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

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

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

telnet <IPアドレス> でopenなしでいきなり接続に行くはずです。
    ↑<>はいりません。
種類:回答
どんな人:専門家
自信:自信あり
回答日時:08/03/24 12:17
回答番号:No.1
この回答へのお礼ご回答ありがとうございます。
>DOSのバッチファイルはDOSレベルでのコマンドしか制御できません。
>TelnetはDOS上で動くアプリなのでtelnet.exeが起動した時点でバッチファイルの制御から外れてしまいます。

batファイルで制御できない理由がとてもわかりやすく、勉強になりました。
最新から表示回答順に表示良回答のみ表示