質問編集履歴
2
ソースコードに重要情報が記載されていたので修正しました。
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()にコマンドの実行結果が出力されないと明記しました。
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クライアントで接続し、該当のコマンドを操作してみましたが、問題なく操作できました。
|