環境:python3
使用的是 demos這個資料夾
2.1 windwos使用paramiko
切換到demos資料夾下
g:\python\untitled\study13\demos>python demo.py修改報錯的 interactive.py , line 84#報錯file "g:\python\untitled\study13\demos\interactive.py", line 84, in writeall
sys.stdout.write(data)
typeerror: write() argument must be str, not bytes
# python3中socket傳輸是bytes型別,而這邊接收的是str型別
def writeall(sock):改完之後,輸入ip 和 密碼可以登入了while true:
data = sock.recv(256)
if not data:
sys.stdout.write('\r\n*** eof ***\r\n\r\n')
sys.stdout.flush()
break
sys.stdout.write(data.decode()) # 將原本的data 解碼
sys.stdout.flush()
# data.decode() 即可
從上圖可以看出,通過paramiko中的demo.py 連線伺服器,執行的命令是從「here we go」 後面正式開始的,也就是在此之後的命令是通過paramiko封裝的,用以發往不同的伺服器。所以我們需要找到這個位置,檢視它們的原始碼。
chan = t.open_session()修改interactive_shell(chan) 中 posix_shell(chan)函式, 以記錄所有輸入的字元(命令)chan.get_pty()
chan.invoke_shell()
print('*** here we go!\n')
interactive.interactive_shell(chan)
chan.close()
t.close()
# 可以看到 print('*** here we go!\n') 後面
# 執行的乙個函式 interactive.interactive_shell(chan)
# 所以要去看這個函式寫的什麼
cmd = # 定義乙個空列表,記錄所有輸入的字元在linux伺服器上測試while true:
r, w, e = select.select([chan, sys.stdin], , )
if chan in r:
try:
x = u(chan.recv(1024))
if len(x) == 0:
sys.stdout.write('\r\n*** eof\r\n')
break
sys.stdout.write(x)
sys.stdout.flush()
except socket.timeout:
pass
if sys.stdin in r:
x = sys.stdin.read(1)
if len(x) == 0:
break
if x == "\r": # 回車表示一條命令輸入完成
cmd_str = "".join(cmd) # 拼接命令
print('\n' + '-->' + cmd_str)
cmd = # 清空cmd列表
else:
chan.send(x)
finally:
termios.tcsetattr(sys.stdin, termios.tcsadrain, oldtty)
這樣輸入的命令已經可以看到了。
weka原始碼去gui版本分享
因為專案需要引入weka,但是weka中包含的東西太多,特別是gui這一塊太大了。我們只需要用到裡面的randomforest,於是對原始碼進行了一些刪減,出來了這樣乙個去gui版本。主要是去掉了gui相關 及資源,lib中移除了幾個非必須jar包,少量地方做了移除gui後的處理 對演算法功能無影響...
pppd 原始碼修改1
1.pppd撥號成功後,會將解析到的dns伺服器ip位址,寫入 etc ppp resolv.conf 這樣的話,gethostbyname r並不會識別,並且,如果有啟動兩路pppd的話,後面一路會將resolv.conf檔案重寫。因此,這塊 需要修改。在pppd ipcp.c檔案中,修改crea...
如何修改iview原始碼
前情提要 做的乙個需求是想要滑鼠進入彈框便不消失,移出滑鼠彈框消失 即iview的 notice 仔細檢視了iview notice模組發現並不支援此功能 因此 只能自己嘗試修改iview源 以下修改流程以修改notice為例 首先將iview的官方原始碼庫clone下來 cd iview git ...