質問編集履歴

2

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

2021/03/09 05:49

投稿

sumou_sumou
sumou_sumou

スコア1

test CHANGED
File without changes
test CHANGED
@@ -46,6 +46,28 @@
46
46
 
47
47
  ```python
48
48
 
49
+ # -*- coding:utf-8 -*-
50
+
51
+ import getpass
52
+
53
+ import sys
54
+
55
+ import telnetlib
56
+
57
+
58
+
59
+ HOST = "xxx.xxx.xxx.xxx"
60
+
61
+ #user = input("Enter your remote account: ")
62
+
63
+ #password = getpass.getpass()
64
+
65
+ user = b"adminuser"
66
+
67
+ password = b"dummypassword"
68
+
69
+
70
+
49
71
  tn = telnetlib.Telnet(HOST)
50
72
 
51
73
 

1

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

2021/03/09 05:49

投稿

sumou_sumou
sumou_sumou

スコア1

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- telnetlibのサンプルを参考に、単純なコマンドを実行して結果を出力してみたところ、結果が出力されませんでした。
9
+ telnetlibのサンプルを参考に、単純なコマンドを実行して結果を出力してみたところ、read_all()にコマンドの結果が出力されませんでした。
10
10
 
11
11
  途中経過をread_eager()を使用して出力してみましたが何も表示されないため、正常にコマンドを送信できていないのだと思われます。
12
12
 
@@ -22,8 +22,120 @@
22
22
 
23
23
  スクリプトを実行した結果は以下の通りです。
24
24
 
25
+ 修正後
26
+
27
+ ```shell
28
+
29
+ $ python3 telnet.py
30
+
31
+ Login:
32
+
33
+ Login Success
34
+
35
+ b''
36
+
37
+ b''
38
+
39
+ exit
40
+
25
41
  ```
26
42
 
43
+ ### 該当のソースコード
44
+
45
+
46
+
47
+ ```python
48
+
49
+ tn = telnetlib.Telnet(HOST)
50
+
51
+
52
+
53
+ tn.read_until(b"login: ")
54
+
55
+ print("Login:")
56
+
57
+
58
+
59
+ tn.write(user + b"\n")
60
+
61
+ if password:
62
+
63
+ tn.read_until(b"Password: ")
64
+
65
+ tn.write(password + b"\n")
66
+
67
+ print("Login Success")
68
+
69
+
70
+
71
+ tn.read_until(b'>')
72
+
73
+
74
+
75
+ #ページ送り無効
76
+
77
+ tn.write(b"terminal length 0\n")
78
+
79
+ print(tn.read_eager())
80
+
81
+
82
+
83
+ tn.read_until(b">")
84
+
85
+
86
+
87
+
88
+
89
+ #特権モードへ
90
+
91
+ tn.write(b"enable\n")
92
+
93
+
94
+
95
+ tn.read_until(b"#")
96
+
97
+
98
+
99
+ #tn.write(b"show wireless ap status\n")
100
+
101
+ tn.write(b"show virsion\n")
102
+
103
+ print(tn.read_eager())
104
+
105
+
106
+
107
+ tn.read_until(b"#")
108
+
109
+ tn.write(b"exit\n")
110
+
111
+
112
+
113
+ print(tn.read_all().decode("ascii"))
114
+
115
+
116
+
117
+ tn.close()
118
+
119
+ ```
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+ ご指摘を受けてソースを修正しました。
128
+
129
+ ・tn.read_eager() が出力されるように修正した
130
+
131
+ ・デバッグ用のメッセージ部分を削除した
132
+
133
+
134
+
135
+ ご指摘修正前の出力結果
136
+
137
+ ```shell
138
+
27
139
  ~/python$ python3 -V
28
140
 
29
141
  Python 3.6.9
@@ -56,7 +168,7 @@
56
168
 
57
169
 
58
170
 
59
- ### 該当のソースコード
171
+ ご指摘修正前のソース
60
172
 
61
173
  ```python
62
174
 
@@ -172,6 +284,8 @@
172
284
 
173
285
 
174
286
 
287
+
288
+
175
289
  ### 試したこと
176
290
 
177
291
  Windows からTeraTearm や 今回操作しているクライアントPCからTelnetクライアントで接続し、該当のコマンドを操作してみましたが、問題なく操作できました。