Pythonでスクショを撮ってTeamsで共有する
はじめに
新型コロナによって、絶賛リモートワーク推奨中の弊社にて、AppStreamをこしらえた話はこないだnoteに書きました。
AppStreamをこしらえたものの、AppStreamでは対応できてないアプリケーションがあったり、ユーザーの使い勝手としてはVPN→社内PCにRDPみたいな方が便利だったりします。
ところが、VPNのセッション数には限りがあるため、随時セッション数が逼迫してないかは把握しときたいなという、、システム管理者的な思いを自動化した話をしたいと思います。
どうやる?
弊社のVPN装置はマネジメントコンソールからダッシュボードに時間あたりの利用ユーザー数が確認できます。
こんな感じです。
これを最初の頃は、、、毎度
・マネジメントコンソールにログインする
・スクショする
・Teamsに共有する
と手動でやっていた所を、
・スケジュール通り(平日 10:00-21:00の間で3時間毎に)
・Pythonで自動ログインしスクショを撮り、OneDriveに保存する
・共有URLをTeamsに投稿する
という具合に自動化してみました。
環境はWindowsです。
Pythonスクリプト
先に断っておくと、私はPython素人です(勉強中)。色々web上で情報を集めてスクリプトを作成していますので、一応動いていますが、書き方などはご指摘頂けるとありがたいです。
# 各種モジュール読み込み
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import chromedriver_binary
import time
import datetime
# 証明書エラー回避
options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')
capabilities = DesiredCapabilities.CHROME.copy()
capabilities['acceptInsecureCerts'] = True
driver = webdriver.Chrome(executable_path='Chromeドライバーの場所\\chromedriver.exe', chrome_options=options, desired_capabilities=capabilities)
driver.get('ログインURL')
# ID/PASSを入力
id = driver.find_element_by_id("ユーザー名のエレメントID")
id.send_keys("ユーザー名")
password = driver.find_element_by_id("パスワードのエレメントID")
password.send_keys("パスワード")
time.sleep(5)
# ログインボタンをクリック
login_button = driver.find_element_by_name("ログインボタンのエレメント名")
login_button.click()
now = datetime.datetime.now()
# ダッシュボード画面のスクショ
driver.get('ダッシュボード画面のURL')
driver.set_window_size(1280, 720)
driver.save_screenshot('OneDriveと同期しているフォルダ\\screenshot{0:%Y%m%d%H%M}.png'.format(now))
# ログアウト処理
driver.get('ログアウトURL')
driver.quit()
seleniu
基本はseleniumを使用して、自動ログイン + スクショの処理をしています。
マネジメントコンソールがプライベートIPでSSL証明書を用意していないので、証明書エラー画面の回避処理も入れています。
Teamsに投稿するために、スクショの保存先をOneDriveと同期させているフォルダにしておく事がポイントです。
適当な名前、xxx.pyで保存します。
スケジュール設定
タスクスケジューラでPythonスクリプトを動かします。
スケジュール例ですが、平日の10:00-19:00の間で3時間おきに実行という形であれば以下の設定になります。
操作はこのような形になります。
Teamsへの投稿
Teamsへの投稿部分はPowerAutomateを使用します。
OneDriveにファイルが作成された事をトリガーにしますので、Pythonスクリプトでスクショを保存したタイミングで作動します。
件名に時間を入れたいので、JSTへの変換処理を入れます。
ファイルの共有リンクを作成し、それをTeamsに投稿します。
完成
Teamsへの投稿はこんな感じです!リンクをクリックするとスクショした画面が表示されます。
〆
この記事が気に入ったらサポートをしてみませんか?