teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

ソースコードに重要情報が記載されていたので修正しました。

2021/03/09 05:49

投稿

sumou_sumou
sumou_sumou

スコア1

title CHANGED
File without changes
body CHANGED
@@ -22,6 +22,17 @@
22
22
  ### 該当のソースコード
23
23
 
24
24
  ```python
25
+ # -*- coding:utf-8 -*-
26
+ import getpass
27
+ import sys
28
+ import telnetlib
29
+
30
+ HOST = "xxx.xxx.xxx.xxx"
31
+ #user = input("Enter your remote account: ")
32
+ #password = getpass.getpass()
33
+ user = b"adminuser"
34
+ password = b"dummypassword"
35
+
25
36
  tn = telnetlib.Telnet(HOST)
26
37
 
27
38
  tn.read_until(b"login: ")

1

問題点が明確になっていなかったため、read_all()にコマンドの実行結果が出力されないと明記しました。

2021/03/09 05:49

投稿

sumou_sumou
sumou_sumou

スコア1

title CHANGED
File without changes
body CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Allied Telesis製のL3スイッチに対してpythonのtelnetlibで操作を試みています。
4
4
 
5
- telnetlibのサンプルを参考に、単純なコマンドを実行して結果を出力してみたところ、結果が出力されませんでした。
5
+ telnetlibのサンプルを参考に、単純なコマンドを実行して結果を出力してみたところ、read_all()にコマンドの結果が出力されませんでした。
6
6
  途中経過をread_eager()を使用して出力してみましたが何も表示されないため、正常にコマンドを送信できていないのだと思われます。
7
7
 
8
8
  何が原因かが全くつかめない状況です。
@@ -10,7 +10,63 @@
10
10
 
11
11
  ### 発生している問題・エラーメッセージ
12
12
  スクリプトを実行した結果は以下の通りです。
13
+ 修正後
14
+ ```shell
15
+ $ python3 telnet.py
16
+ Login:
17
+ Login Success
18
+ b''
19
+ b''
20
+ exit
13
21
  ```
22
+ ### 該当のソースコード
23
+
24
+ ```python
25
+ tn = telnetlib.Telnet(HOST)
26
+
27
+ tn.read_until(b"login: ")
28
+ print("Login:")
29
+
30
+ tn.write(user + b"\n")
31
+ if password:
32
+ tn.read_until(b"Password: ")
33
+ tn.write(password + b"\n")
34
+ print("Login Success")
35
+
36
+ tn.read_until(b'>')
37
+
38
+ #ページ送り無効
39
+ tn.write(b"terminal length 0\n")
40
+ print(tn.read_eager())
41
+
42
+ tn.read_until(b">")
43
+
44
+
45
+ #特権モードへ
46
+ tn.write(b"enable\n")
47
+
48
+ tn.read_until(b"#")
49
+
50
+ #tn.write(b"show wireless ap status\n")
51
+ tn.write(b"show virsion\n")
52
+ print(tn.read_eager())
53
+
54
+ tn.read_until(b"#")
55
+ tn.write(b"exit\n")
56
+
57
+ print(tn.read_all().decode("ascii"))
58
+
59
+ tn.close()
60
+ ```
61
+
62
+
63
+
64
+ ご指摘を受けてソースを修正しました。
65
+ ・tn.read_eager() が出力されるように修正した
66
+ ・デバッグ用のメッセージ部分を削除した
67
+
68
+ ご指摘修正前の出力結果
69
+ ```shell
14
70
  ~/python$ python3 -V
15
71
  Python 3.6.9
16
72
 
@@ -27,7 +83,7 @@
27
83
  exit
28
84
  ```
29
85
 
30
- ### 該当のソースコード
86
+ ご指摘修正前のソース
31
87
  ```python
32
88
  # -*- coding:utf-8 -*-
33
89
  import getpass
@@ -85,6 +141,7 @@
85
141
  tn.close()
86
142
  ```
87
143
 
144
+
88
145
  ### 試したこと
89
146
  Windows からTeraTearm や 今回操作しているクライアントPCからTelnetクライアントで接続し、該当のコマンドを操作してみましたが、問題なく操作できました。
90
147
  操作しているスイッチ固有の問題ではないかと考えていますが、検索して近い事象は見当たりませんでした。