見出し画像

ワンクリックVPN接続3rd

AnyConnectのVPN接続をワンクリック化(By Power Automate Desktop)その3


本記事は、前記事の続編に相当します。

A.概要

 テレワーク時のVPNの接続が面倒くさい。Power Automate Desktopを使って、簡単にしようという試みです。前回、いろいろな人のIDや読み方でも使えるように改良しました。
 しかし、設定ファイルの記入の仕方が特殊で解りにくい物でした。また、読み込んだ数字表の読み方をWEBのCSSセレクタに合わせる加工が、毎実行時に8回のループを処理するもので時間の無駄な事に気付きました。
 さらに、記事投稿後にいろんな接続環境で試す中、うまく接続できないケースがあることも判明しました。
 今回は、これら三つ点の改良をして完成版にしたいと思います

  1. 設定ファイルを事前に作成するのではなく、初回起動時に簡単に作成して保存し、以後それを参照するようにする。

  2. CSSセレクタに合わせる処理を初回だけにし、処理後の情報を保存しておくことで動作時間も改良する。

  3. 実はAnyConnectのログインサーバーが二種類あり、回線速度で区別されていることが判ったので対策をする。

使用する回線速度により、自動的に振り分けられると思われる二つのサーバー

B.完成した動作状況

自宅のWiFiからなのでcomet1に繋がっています。

C.使用したツール(前回と同じ)

  • Power Automate Desktop  :MS謹製 RPAツール

  • Any Connect        :Cisco製 VPN接続アプリ

  • PassLogic          :ワンタイムパスワード

D.制作のツボ

1.設定ファイルを事前に作成するのではなく、初回起動時に簡単に作成して保存し、以後それを参照するようにする。

前作の数字表の読み方の保存形式、A2:B9に座標として保存していた

 一目で、保存してある読み順の形式が理解できるとは思えない。意味が判らないと、事前に設定ファイルを作ることが出来ない。
 今回は、初めて起動したときに以下のUIを表示して、読み順通りの数字を答えて貰う様にしました。

読み順①~⑧に沿って、数字を入力して答える
11行目で、上のUIを作成している
11行目の中身、UIを定義しているところ

 入力した値は、「CustomFormData」というカスタムオブジェクト型変数に格納されます。

カスタムオブジェクト型変数の扱いについては、当初、意味が解らず苦労しました。以下の記事を参考に勉強させて貰いました。感謝です。
https://qiita.com/sys_zero/items/6006ab42e2af60c170b5

2.CSSセレクタに合わせる処理を、初回だけにし、処理後の情報を保存しておくことで、動作時間も改良する。


「CustomFormData」の加工前の中身

 先ほど取得した数字の読み方を、WEBに表示される数字表を読むためのCSSセレクタの形式に合わせるための処理です。以下のループを通してから、Excelに保存します。今回は、12列×4行の数字を1~48で表現したため、うまく計算で、0~3の数字、3種類に加工しなければなりません。計算式を作るのにかなり時間を要しました。

各数字を一つずつ8回処理している


ループ処理後の数列
CSSセレクタの形式と数字表の関係

 そして、今回は、得られた数列を毎回計算しなくても良いように、予め設定用のファイルとしてExcelで保存しておくことにしました。

保存した設定ファイル(例)この数列から、正しい読み順は推定しにくい。

3.実は、AnyConnectのログインサーバーが、二種類あり、回線速度で区別されていることが解ったので、その対策をする。

 出来上がった物を、読み順を色々変えて試している際、AnyConnectへの
パスワードの入力の祭に、時々、「ウィンドウが見つからない」というようなエラーが出て、止まってしまうことがありました。
 当初、理由が判らず、ウィンドウが表示されるまでの時間の関係かとWaitを入れるなどして色々試していましたが、回線環境に依存することに気がつきました。さらに試している内に、よく見るとサーバーが1と2で二つあることに気がつきました。(冒頭の画像)。

入力するウィンドウの名前も異なる為、動いたり動かなかったりしていた。

 対策としては、ウィンドウの名前で場合分けして対応することにしました。また、IDの数列に続く「@ivpn.otp00098.ultina」の文字列についても、異なる環境の人がいても利用できるよう、最初に設定ファイルに保存することにしました。毎回のログイン時に、ワンタイムパスワードだけでなく、IDも自動入力させるように変更しています。

ウィンドウの名前で場合分けしている所

E.チームの同僚への展開

  ほぼ、満足のいく水準になった所で、実際に同じチームの仲間二人への展開を試みました。
 インストールを同意してくれて、作業に取りかかった時、Power Automate Desktopのインストールで躓きました。二人とも同じ症状で、「.NET Framework」が足りないそうです。自分のPCでは、問題無くインストール出来たので、何かが違うのか調べると、Windows10のバージョンが異なっていました。二人のは「1709」私のは「1809」、そういえば部内で別の仕事を担当しているときに、Adobe Illustrator を入れるために、バージョンアップした事を思い出しました。Windowsの更新も含めて、二人にPower Automate Desktopをインストールする方法を調査中です。今後作成するフローこそ、使って頂く必要があるので、なんとかしたいと思います。

セットアップ中のエラー


F.最後に

 最初のバージョンの時、VPNの接続後、Power Automate Desktopが不安定になるという事を書きましたが、弊社の場合、VPN接続中はPower Automate Desktopが利用できない状態のようです。

出現したエラーメッセージ

 今回作成したフローは、今後作成する予定の自動化フローの中で、サブフローのごとく呼び出して、テレワーク時に社内ネットからデータを取得することが真のねらいです。こんな制限あっては、活用の幅が狭まります。社内のネットワーク管理者に報告しました。ところが意図的に使用できないように設定していたのではなかったようで、原因を調べて改善できるようなら改善して貰える事になりました。
 まだ確定していませんが、調査中に判明したことは、しばらく待っていると、VPN下でもフローが表示される場合もありました。どうやら、VPN回線の容量が足りていないのが原因ということになりそうです。
 今回のフローは、当初考えていたよりも複雑になり、結果としてPower Automate Desktopについて、かなり詳しくなりました。初めて手がけたフローとしては、よく頑張ったと自己満足しています。変数に始まり、フローの制御、ファイルへの読み書き、UIの作成と一通りの事は試しました。今後のフローの作成へ自信が付きました。
 オンラインの仲間から、自分も試して見たいというお声を頂いた事もあり、全ソースを公開しました。

(11月2日追記)
 VPN接続後の不安定になる現象は、「Microsoft Edge WebView2」と言うランタイムを入れる事で改善しました。WindowsUpdateが有効なパソコンでは、自動でインストールされますが、弊社では最低限の更新ファイルしか配信されていないために発生していました。
 同様に同僚のパソコンには、.NET Frameworkが不足していたため、Power Automate Desktopのインストールに失敗していました。


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