Amazon

2020年10月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

最近のトラックバック

無料ブログはココログ

« .Net Core ASP.NET MVCをLinux(Debian + Docker)で動かしてみる : 準備編(Debian 10) | トップページ | mecab-ipadic-NEologdの最新の辞書ファイルを作成する(debian 10) »

2020年5月 8日 (金)

.NET (C#)でSSH接続してLinuxでコマンドを実行する

今回はC#でSSH接続して、Linuxサーバに処理をさせてみたいと思います。今回も非常に簡単な小ネタです。
勿論、nuget packageで便利なパッケージを入手して、さくっと作ってしまいます。




Linuxで好きなスクリプトを作ればいいじゃん…と、言う声が聞こえてきそうなのですが、一々ターミナルソフトを
起動して、ログインして、コマンド打ち込んで…と、言うのは意外と面倒なのです。また、スクリプトを用意
しておくのも以外と面倒…。さくっとexeをダブルクリックするだけで何かの仕事をして欲しい。。。
と、いう訳で今回は、そんなexeをC#で作成してみたいと思います。


・.NET(C#)でLinuxにSSH接続する

Microsoft謹製(らしい)の下記のパッケージを使用します。

   sshnet / SSH.NET

20200501ssh_01

VisualStudioを使用している場合は、プロジェクトファイルを右クリックしてパッケージを追加して下さい。

20200501ssh_02

このパッケージさえインストールすれば、非常に簡単にSSHでLinuxを操作できます。


・実際にコーディングしてみる

今回は.NET Frameworkではなく.NET Core 3.1を使用して作成しました。実は.NET Coreの方が.NET Frameworkより
便利な点があるのです。後ほど説明します。

SSH接続するコードは非常に簡単です。以下の様にたった数行で動いてしまいます。

以下の様なクラスを作成してみました。



これを以下の様に呼び出します。以下の例では下記の様な動作をします。

  ・Linuxサーバ(192.168.1.2)にSSHで接続
  ・ユーザ名はroot / パスワードは password
  ・df -k / ls -la / ip addr の順に三回コマンドを実行




たったこれだけで、コマンドを連続実行して戻ってきます。拍子抜けするぐらい簡単ですね。


・アセンブリをまとめてEXEファイル一つで動作する様にする

さて、.NET Coreの良いところです。それは簡単にDLLファイルを一つのEXEファイルにまとめることができるところです。
.NET FrameworkもILMerge.exeを使用すれば、EXEファイル一つにまとめる事ができましたが、.NET Coreの場合は
もっとお手軽に実行する事ができます。

EXEファイルを一つだけにする事ができるとお手軽に扱うことができますので、今回の様なチョイプロがよりお手軽に
扱える様になります。

それでは、実際にやって見ましょう。 最初に「発行」をクリックします。

20200501ssh_03

続いて、「プロファイルの作成(P)」をクリックします。

20200501ssh_04

すると、FolderProfile.pubxml が作成されます。

20200501ssh_05

以下の様なファイルが作成されているはずですので、二行追加します。




上記ファイルを編集したら再度 「発行」 をクリックし、以下の画面を表示します。

20200501ssh_06

さらに上記画面で「発行」ボタンをクリックすると、ビルド&発行(Publish)されます。
すると、で指定したフォルダ(ここではbin\Release\netcoreapp3.1\publish\)にEXEが一つだけ
出力されます。

20200501ssh_07

素晴らしい…これで、EXEファイル一つだけで手軽に使用する事が可能です!


如何でしょう。これで、1ファイルのEXEでWindowsでダブルクリックするだけで定型処理を実行してくれるプログラムを
作る事ができました。これで、定型的な動作を自動化していきましょう。


・実際に実施させたい処理

さて、これはどんな事に使えるのか。正直なところなんにでも使えるのですが、要するに普段やっている様な定型処理
であれば、なんでも良いと思います。例えば、私が良く実施しているのは以下の様な処理があります。

  ・Shutdown
    これ、非常にシンプルですが毎回やります。サクッと処理出来るようになっていると嬉しいです。
    sync / sync / sync / shutdown -h now ですね。

  ・rsync
    rsyncコマンドを実行して、リモートサーバの差分バックアップを実行しています。自宅gitlab等の
    バックアップをさくっと取得します。


なんにでも応用が効きますのでさくっと作成して、便利に使いましょう!



如何でしょうか。確かに、指が覚えていてそれ程手間ではない作業だったりしますが、それでも普段利用している
パソコンからサーバに手動でログインする事無くシャットダウンできるのもそれなりに便利です。こんな処理を
作成してサクッと終わらせるのも、ライフハックと呼べるのかもしれません!





今回、メモリ16GBのPCでVisualStudio2019+VisualStudioCode+ブラウザ+Debian(Hyper-V 8GBメモリ)を起動
しようとしたらメモリが足りなくて起動できませんでした。簡単な作業なら一台のPCでこなすつもりだったのですが、
ちょっと本格的に何かするには16GBでも足りないのですね。ちょっと残念。。。
あまり使っていないPCにVMWareでもインストールしてみるべきだろうか…。こうして、断捨離は常に失敗し続けています。










« .Net Core ASP.NET MVCをLinux(Debian + Docker)で動かしてみる : 準備編(Debian 10) | トップページ | mecab-ipadic-NEologdの最新の辞書ファイルを作成する(debian 10) »

C#」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« .Net Core ASP.NET MVCをLinux(Debian + Docker)で動かしてみる : 準備編(Debian 10) | トップページ | mecab-ipadic-NEologdの最新の辞書ファイルを作成する(debian 10) »