先日 Proxmox 上の仮想マシンで BCAS のカードリーダーを使えるように説明しました。今回はそれを活用したいと思います。 Windows では BonCasLink というソフトウェアがありました。LAN内でBCASを共有してしまおうというやつです。これのサーバー側を Linux で実現するプログラムで bcs-perl というものがあるのでこれを使ってみようと思います。
準備
- 以前に構築した仮想マシン
- 仮想マシンにスマートカードリーダーを接続
- 動作確認のための Windows PCなど
インストール
GitHub(https://github.com/walkure/bcs-perl) にあるので git を使ってローカルに落としてきます。
gitがインストールされていないと思うので準備します。
# yum install git
ここからは専用の一般ユーザー(bcasuser)を作成してこちらで作業しました。Perlスクリプトで実現されているため、clone したら即使えそうだったのですが、改行コードの問題から一度変換してやる必要があります。
$ cd ~/ $ git clone https://github.com/walkure/bcs-perl Initialized empty Git repository in /home/bcasuser/bcs-perl/.git/ remote: Counting objects: 31, done. remote: Total 31 (delta 0), reused 0 (delta 0), pack-reused 31 Unpacking objects: 100% (31/31), done. $ cd bcs-perl $ mv bcs-perl.pl bcs-perl.bak; tr -d \\r < bcs-perl.bak > bcs-perl.pl $ chmod -x bcs-perl.bak $ chmod +x bcs-perl.pl
まずは実行してカードリーダーの情報を確認します。以下のような感じで出てくると思います。出てこないようであれば、うまくリーダーが接続できていないのでそこから確認してみてください。
$ ./bcs-perl.pl list >>List of PC/SC card reader SCM SCR 3310 NTTCom (21234567890123) 01 02 >>EOL
この文字列を bcs-perl.pl 内に記載する必要があります。ソースコード中に以下の文字列があるのでこの中に上記で得られた文字列を記入します。
my $selected_reader = 'SCM SCR 3310 NTTCom [Vendor Interface] (21120651345180) 00 00';
設定したら今度は普通に実行します。
”>>Begin Listening(0.0.0.0:6900)…..”
なる文字列が出てくればうまくうごいていると思います。
動作検証
Windowsなどの環境で BonCasLink のクライアントを動作させて、この仮想マシンに接続させてみます。うまくいかない場合には、仮想マシンのファイアウォールを見直しするとかSELinuxが切れているかを確認してみましょう。
最後に
ここではやりませんが、あとはスクリプトをログアウトしても動くように nohup 付きで起動するとか、自動起動するようにスクリプトを書くとか、体裁を整えるのまでやればより完璧でしょう。