UNIX上のシェルを起動して返り値をとるには?


ももんが  2003-04-02 12:31:33  No: 77521

UNIXへ接続してUNIX上のシェルを起動し、返り値を取りたいのですが
うまくいきません。
Winsockコントロールを使ってUNIXへ接続はされているのですが、その後の、ログインや、ディレクトリの移動すらできない状態で行き詰まっています。
いろいろなサイトや、こちらの過去のログなど見させて頂いて、バイトで配列送信(?)すればいいということと、文字コードを変換しなければいけないということは
分かったのですが、ホントに驚くほど初心者なものでいまいち理解できないでいます。
APIもなるべく使わないように言われてます。

もう時間もなくて泣きはいってます。どうかご指導よろしくお願いいたします。


けみ  2003-04-03 05:02:20  No: 77522

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:」が送られてきます。

応答するべきデータは上記ログを見るなり、ネットで
調べて確認してみてください。

文字コードの変換についてはなんともいえません。


Loreley  2003-04-03 14:57:24  No: 77523

少しヒント。
これらのバイトの送受信は一応会話としてなりたたせています。
たとえば
    OutByteData(1) = &HFF
    OutByteData(2) = &HFD
    OutByteData(3) = &H25
    Winsock1.SendData OutByteData()

"IAC" "DO" "AUTHENTICATION"
と送っていることになります。
認証させてください。ってことです。
バイトデータには全部意味があります。
がんばって調べてみてください。


Loreley  2003-04-03 15:01:30  No: 77524

まちがえました。
認証します。の方がただしいかな。
認証させてください。
だと調べてる最中ちょっと混乱してしまうかもしれませんね。


ももんが  2003-04-04 10:47:01  No: 77525

けみさん、Loreley さん、ありがとうございます。
おかげさまで、loginすることができました。
初めは送られてきているものの
意味も分かりませんでしたが、ちゃんと書籍等を調べてみると
telnetコマンドの意味が詳しく書いてありました。

開発で大幅な遅れを出しているので、心の底から感謝しております。
あと一息頑張りたいと思います!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加