UNIXへ接続してUNIX上のシェルを起動し、返り値を取りたいのですが
うまくいきません。
Winsockコントロールを使ってUNIXへ接続はされているのですが、その後の、ログインや、ディレクトリの移動すらできない状態で行き詰まっています。
いろいろなサイトや、こちらの過去のログなど見させて頂いて、バイトで配列送信(?)すればいいということと、文字コードを変換しなければいけないということは
分かったのですが、ホントに驚くほど初心者なものでいまいち理解できないでいます。
APIもなるべく使わないように言われてます。
もう時間もなくて泣きはいってます。どうかご指導よろしくお願いいたします。
TELNET接続ですか?
「login:」 までたどり着くにはサーバーとネゴシエーションを
行わないといけません。
まずはteraterm等を使ってサーバーに接続し、どのようなやり取りが
行われているかログを確認してみましょう。
ログのとり方はteraterm.ini内の
; Telnet log
; TelLog=on
を
; Telnet log
TelLog=on
にします。
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim InByteData() As Byte
Winsock1.GetData InByteData, vbByte
debug.print InByteData(0)
debug.print InByteData(1)
debug.print InByteData(2)
End Sub
'応答(例です)、フォームにCommand2ボタンを配置
Private Sub Command2_Click()
Dim OutByteData(1 To 3) As Byte
'応答データの設定
'下記データはWIN2000のTelnet サーバー管理ツールに
'teratermでつないだときの値です。
OutByteData(1) = &HFF
OutByteData(2) = &HFD
OutByteData(3) = &H25
Winsock1.SendData OutByteData()
End Sub
接続するとDataArrivalイベントが発生するので
その後Command2を押してみてください。
再度DataArrivalイベントが発生するはずです。
何回か応答していると晴れて「login:」が送られてきます。
応答するべきデータは上記ログを見るなり、ネットで
調べて確認してみてください。
文字コードの変換についてはなんともいえません。
少しヒント。
これらのバイトの送受信は一応会話としてなりたたせています。
たとえば
OutByteData(1) = &HFF
OutByteData(2) = &HFD
OutByteData(3) = &H25
Winsock1.SendData OutByteData()
は
"IAC" "DO" "AUTHENTICATION"
と送っていることになります。
認証させてください。ってことです。
バイトデータには全部意味があります。
がんばって調べてみてください。
まちがえました。
認証します。の方がただしいかな。
認証させてください。
だと調べてる最中ちょっと混乱してしまうかもしれませんね。
けみさん、Loreley さん、ありがとうございます。
おかげさまで、loginすることができました。
初めは送られてきているものの
意味も分かりませんでしたが、ちゃんと書籍等を調べてみると
telnetコマンドの意味が詳しく書いてありました。
開発で大幅な遅れを出しているので、心の底から感謝しております。
あと一息頑張りたいと思います!
ツイート | ![]() |