現在、Pythonでデスクトップアプリ「Tkinter」を利用して開発をしています。
このTkinterを利用して、NW機器にSSH接続をしコマンド出力を表示させますが、「パスワード」入力欄で文字列が表示されるのを隠したいので「*」にする方法を紹介します。
「Tkinter」の文字列を隠し、「*」表示にする方法
以下のプログラムはTkinterでデスクトップアプリを立ち上げ、入力欄を記載し、自動でNW機器へアクセス、指定のコマンドを入力し出力結果を表示します。
ここで、パスワード欄に文字列を表示させず、「*」表記にして記入します。
「show」コマンドを使用することにより、文字列入力欄で別の文字に変換し隠してくれます。
※ ssh_test_tkinter_password_sample_00.py
import tkinter import paramiko from tkinter import messagebox #ボタンがクリックされたら実行 def button_click(): input_host_value = input_name.get() input_name_value = input_address.get() input_address_value = input_pass.get() input_command_value = input_command.get() client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(input_host_value, username=input_name_value, password=input_address_value) stdin, stdout, stderr = client.exec_command(input_command_value) stdin.write(input_command_value) for o in stdout: with open('file.csv', 'a', newline='') as f: print(o, end='', file = f) print(o) for e in stderr: print(e) client.close() root.quit() print('コンフィグ取得 > csvファイル保存完了') # tkinter_ウインドウの作成 root = tkinter.Tk() root.title("SSH_LOG_GET GUI") root.geometry("350x120") # host/IPaddress input_name_label = tkinter.Label(text="host") input_name_label.grid(row=1, column=1, padx=10,) # host/IPaddress入力欄の作成 input_name = tkinter.Entry(width=40) input_name.grid(row=1, column=2) # userID input_address_label = tkinter.Label(text="name") input_address_label.grid(row=2, column=1, padx=10,) # userID入力欄の作成 input_address = tkinter.Entry(width=40) input_address.grid(row=2, column=2) # パスワード input_pass_label = tkinter.Label(text="password") input_pass_label.grid(row=3, column=1, padx=10,) # パスワード入力欄の作成 input_pass = tkinter.Entry(show='*', width=40) input_pass.grid(row=3, column=2) # コマンド input_command_label = tkinter.Label(text="command") input_command_label.grid(row=4, column=1, padx=10,) # コマンド入力欄の作成 input_command = tkinter.Entry(width=40) input_command.grid(row=4, column=2) #ボタンの作成 button = tkinter.Button(text="実行ボタン",command=button_click) button.place(x=10, y=80) #ウインドウの描画 root.mainloop()
Tkinterのパスワード表示 ※実行結果
上記プログラムを実行することにより、以下のようにアプリが立ち上がり、パスワード入力欄が「*」と表示されます。
※ 実行結果
パスワード入力欄が「*」となり、文字列が表示されないことが確認できました。
PS C:\Python> python .\ssh_test_tkinter_password_sample_00.py コンフィグ取得 > csvファイル保存完了 ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 475M 0 475M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 7.7M 479M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root 17G 1.6G 16G 10% / /dev/sda1 1014M 167M 848M 17% /boot tmpfs 98M 0 98M 0% /run/user/0 PS C:\Python>
CSVファイルにも出力結果が書き込まれていることが確認できます。
サンプルコードはそのままコピペで利用できますので、使用してください。
※importモジュールは事前に「pip install」してください。
サーバーを構築するならVPSがおすすめです。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
コメントを残す