見出し画像

Pythonでスクショを撮ってTeamsで共有する

はじめに

新型コロナによって、絶賛リモートワーク推奨中の弊社にて、AppStreamをこしらえた話はこないだnoteに書きました。

AppStreamをこしらえたものの、AppStreamでは対応できてないアプリケーションがあったり、ユーザーの使い勝手としてはVPN→社内PCにRDPみたいな方が便利だったりします。

ところが、VPNのセッション数には限りがあるため、随時セッション数が逼迫してないかは把握しときたいなという、、システム管理者的な思いを自動化した話をしたいと思います。

どうやる?

弊社のVPN装置はマネジメントコンソールからダッシュボードに時間あたりの利用ユーザー数が確認できます。

こんな感じです。

スクリーンショット 2020-03-30 15.40.33

これを最初の頃は、、、毎度

・マネジメントコンソールにログインする
・スクショする
・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時間おきに実行という形であれば以下の設定になります。

スクリーンショット 2020-03-30 16.53.52

操作はこのような形になります。

スクリーンショット 2020-03-30 16.54.33

Teamsへの投稿

Teamsへの投稿部分はPowerAutomateを使用します。

OneDriveにファイルが作成された事をトリガーにしますので、Pythonスクリプトでスクショを保存したタイミングで作動します。
件名に時間を入れたいので、JSTへの変換処理を入れます。
ファイルの共有リンクを作成し、それをTeamsに投稿します。

スクリーンショット 2020-03-30 17.06.37

完成

Teamsへの投稿はこんな感じです!リンクをクリックするとスクショした画面が表示されます。

スクリーンショット 2020-03-30 18.33.36

この記事が気に入ったらサポートをしてみませんか?