大量のRDP接続用のファイル、Pythonで作ってみた
はじめに
複数の端末に対してRDP接続する必要がある場合に、わざわざExcelのリストを見て手入力で接続するのは面倒、と思い、RDPファイルをまとめてPythonで作れるようにしてみました...!!
準備
入力情報、Pythonファイルを以下に示します。
入力情報
以下の2ファイルを作成します。
1. RDP接続先リスト(接続先リスト_sample.xlsx)
2. RDPテンプレート(template.rdp)
1. RDP接続先リスト(接続先リスト_sample.xlsx)
2. RDPテンプレート(template.rdp)
以下のように「コンピュータ名」を「ComputerAddress」に、「ユーザー名」を「UserName_for_RDP」として、「名前を付けて保存」を使って、template.rdpとして作業用ディレクトリに保存しておきます。
なお、RDP接続ファイル(template.rdp)はテキストエディタで開くと以下のようになっています。パスワードはRDPファイル自体には保存されないことが読み取れます。
screen mode id:i:2
use multimon:i:1
desktopwidth:i:1920
desktopheight:i:1080
session bpp:i:32
winposstr:s:0,1,759,0,980,270
compression:i:1
keyboardhook:i:2
audiocapturemode:i:0
videoplaybackmode:i:1
connection type:i:7
networkautodetect:i:1
bandwidthautodetect:i:1
displayconnectionbar:i:1
enableworkspacereconnect:i:0
disable wallpaper:i:0
allow font smoothing:i:0
allow desktop composition:i:0
disable full window drag:i:1
disable menu anims:i:1
disable themes:i:0
disable cursor setting:i:0
bitmapcachepersistenable:i:1
full address:s:ComputerAddress
audiomode:i:0
redirectprinters:i:1
redirectcomports:i:0
redirectsmartcards:i:1
redirectclipboard:i:1
redirectposdevices:i:0
autoreconnection enabled:i:1
authentication level:i:2
prompt for credentials:i:0
negotiate security layer:i:1
remoteapplicationmode:i:0
alternate shell:s:
shell working directory:s:
gatewayhostname:s:
gatewayusagemethod:i:4
gatewaycredentialssource:i:4
gatewayprofileusagemethod:i:0
promptcredentialonce:i:0
gatewaybrokeringtype:i:0
use redirection server name:i:0
rdgiskdcproxy:i:0
kdcproxyname:s:
drivestoredirect:s:
camerastoredirect:s:*
devicestoredirect:s:*
username:s:UserName_for_RDP
Pythonのファイル
# -*- coding: utf-8 -*-
"""
RDPファイル作成PGM
"""
import tkinter, tkinter.filedialog, sys, os
import pandas as pd
dir1 = r"C:\Users\XXXXX\Desktop\xxxxxx"
# ↑「RDP接続先リスト」や「RDPテンプレート」を格納しているファイルパスを指定
## tkinterのお決まり。
root = tkinter.Tk()
root.withdraw()
msg1 = '接続先リストを選択してください'
typ1 = [('エクセルファイル','*.xlsx')]
inFile1 = tkinter.filedialog.askopenfilename(title=msg1, filetypes = typ1, initialdir = dir1)
if (not inFile1): #[キャンセル]クリック時の処理
print('ファイルを選んでください。')
sys.exit
input_book1 = pd.ExcelFile(inFile1)
input_sheet_name1 = input_book1.sheet_names
input_sheet_df1 = input_book1.parse(input_sheet_name1[0],header=3)
df_s = input_sheet_df1.iloc[:,2:]
msg2 = 'RDPファイルを選択してください'
typ2 = [('RDPファイル','*.rdp')]
inFile2 = tkinter.filedialog.askopenfilename(title=msg2, filetypes = typ2, initialdir = dir1)
if (not inFile1): #[キャンセル]クリック時の処理
print('ファイルを選んでください。')
sys.exit
path_name = os.path.dirname(inFile2)
output_folder_path = os.path.join(path_name,"output")
## RDPファイル出力先フォルダ作成(exist_ok:既存の場合はスキップ)
os.makedirs(output_folder_path,exist_ok = True)
## RDPテンプレートファイルをテキストファイルとして開く
with open(inFile2,encoding='utf_16') as f:
s = f.read()
## 接続先リストにある接続先の数だけ、RDPファイルを生成する
for i in range(len(df_s)):
temp = s
temp = temp.replace("UserName_for_RDP", df_s["ユーザID"].iat[i])
temp = temp.replace("ComputerAddress", df_s["IPアドレス"].iat[i])
path_w = os.path.join(output_folder_path,df_s["ユーザID"].iat[i]+".rdp")
with open(path_w,mode="w") as f:
f.write(temp)
実行してみる
以下、実行イメージです。
まず、「RDP_File_Generator.py」を実行すると、tkinterによるダイアログが表示されるので、接続先リストを選択します。
outputフォルダができ、その中にRDPファイルが一括で出力されています!成功です!!
おわりに
パスワードはRDPファイル内に埋め込まれたりすることはないので、初回接続時にパスワード入力して資格情報を接続元PCで保存する、という手間は残りますが、便利だと思うので、良かったら参考にしていただけると嬉しいです!
Author And Source
この問題について(大量のRDP接続用のファイル、Pythonで作ってみた), 我々は、より多くの情報をここで見つけました https://qiita.com/miya_sts/items/6fb7abe71ae0d8a28178著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .