Pythonでスクショを撮ってTeamsで共有する
新型コロナウイルスに関係する内容の可能性がある記事です。
新型コロナウイルス感染症については、必ず1次情報として厚生労働省首相官邸のウェブサイトなど公的機関で発表されている発生状況やQ&A、相談窓口の情報もご確認ください。またコロナワクチンに関する情報は首相官邸のウェブサイトをご確認ください。※非常時のため、すべての関連記事に本注意書きを一時的に出しています。
見出し画像

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

とみた 2.4

はじめに

新型コロナによって、絶賛リモートワーク推奨中の弊社にて、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

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
😘
とみた 2.4
インフラエンジニア💻 x 2児のパパ👨‍👩‍👧‍👧 ‖ 元ISPインフラエンジニア⇢アンダーアーマー(ドーム)👨🏻‍💻 ‖ スポーツxデジタル ‖ 技術ネタはブログにhttps://www.gachatsuku.com/ それ以外はnoteに