LoginSignup
1
4

More than 3 years have passed since last update.

【OpenRPA】SSH接続するカスタムアクティビティを作ってみた

Last updated at Posted at 2020-09-07

OpenRPAでSSH接続をしてみたかったのですが、現時点のバージョンにSSHのアクティビティがなかったので、作ってみました。

どうやって作る?

OpenRPAのwikiを見ると

The robot uses Microsoft Workflow Foundation ( .NET version 4.6.2 ). A lot of different products uses this platform ( even other RPA products, for instance UIPath), and in many cases activities created for one platform will also work here. Say someone created an activity that reads the content of a PDF file and inserted that into a string, that activity would most likely also work inside OpenRPA.

ロボットはMicrosoft Workflow Foundation(.NETバージョン4.6.2)を使用します。多くの異なる製品がこのプラットフォームを使用しており(UIPathなどの他のRPA製品でさえ)、多くの場合、1つのプラットフォーム用に作成されたアクティビティもここで機能します。誰かがPDFファイルのコンテンツを読み取り、それを文字列に挿入するアクティビティを作成したとします。そのアクティビティはおそらくOpenRPA内でも機能します。

要は、「Workflow Foundationベースで作られたものならOpenRPAでもたぶん使えるよ!」とのこと。
逆に言えば、UiPathのカスタムアクティビティの作成方法がわかれば、OpenRPAのカスタムアクティビティも作れるはず!

参考にした記事

【UiPath】カスタムアクティビティの作成(事前準備と実践初級)
UiPath Studioで使用するカスタムアクティビティの作成方法
UiPath Studioで使用するカスタムアクティビティの作成方法 つづき(GUI構築)

UiPathのカスタムアクティビティの作成方法として、これらの記事を参考にしました。

OpenRPAのカスタムアクティビティを作成する場合も、ほとんど上記と同じ内容で作成できます。
ただし、現在のOpenRPAではNuGetに対応していないため、NuGet関連の手順については無視します。

というわけでできたもの

image.png

インストール方法

Visual Studioでビルドすると、Releaseの下に

  • OpenRPA.PMTech.SSH.dll
  • Renci.SshNet.dll

ができるので、OpenRPAのフォルダ(C:\Program Files\OpenRPA)にコピーしてください。

ちょっとだけ解説

アクティビティ自体の作り方は、上記の参考記事の通りに作っただけなので、解説は省きます。

SSH接続

SSH接続については、SSH.NETというライブラリを使っています。
Visual StudioのNuGetパッケージマネージャからダウンロードして使っています。

image.png

SSHパスワード問題

こんな感じで接続情報作ってるんですが、パスワードがプレーンテキストなんですよね。

RunCommandActivity.cs

public InArgument<string> Password { get; set; }

ConnectionInfo con = new ConnectionInfo(host, port, user, ProxyTypes.None, null, 0, null, null,
    new AuthenticationMethod[] {
        new PasswordAuthenticationMethod(user, password) });

SecureString使ってあげればプレーンテキストは回避できると思うのですが、テストがどうしてもエラーになってしまって解決できませんでした。

PasswordAuthenticationMethodを使っているのでユーザー/パスワードの認証しかできませんが、PrivateKeyAuthenticationMethodを使えば秘密鍵方式の認証もできそうなので、プレーンテキスト問題と合わせて今後の課題かなー。

おわりに

一応動作確認はしていますが、ちゃんとテストはしていません。
(SSH.NET呼んでるだけだから大丈夫だとおもうけど)

今回作ったのは単発のアクティビティなんですが、ほんとはスコープみたいな感じでやりたかったんですよね。
(最初に接続先だけ定義して、複数コマンド連続実行みたいな)
このあたりもうちょっと調べて、機能追加してみようと思います。

1
4
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4