Top image

Perl Monk

主にPerlとRaspberryPiの個人的技術研鑽


AndroidでL2TPにてVPN接続し、暫くしたら切れる場合

2020/12/24 00:00
category:サーバ全般

AndroidでL2TPにてVPN接続し、暫くしたら切れる場合

あなたのスマホはもしかして Google Pixel3 ではないですか・・・

その場合は・・・

Google Pixel3 には L2TPのKeep Alive が実装していないからです!!!

そんな馬鹿な・・・www

前使ってた京セラのandroid8はあったよ・・・!

頼むよGoogle。

スマホ側ではどうしようもないので、VPNサーバの方で調整する必要があります。

Keep Aliveの機能をオフにし、タイムアウトを別の機能で補えばまあ機種によっては代替となりえます。

ヤマハのルータ系でいうと

l2tp keepalive use off

で無効にし、

l2tp tunnel disconnect time 600

で10分通信がなければ切れるように自分はしました。

すごいハマったので、検索して誰かの調査する時間が減ればと思い一応書いてみました。


windows10のVPN接続をタスクスケジューラに登録し、切断されたら自動接続させる

2020/11/30 21:00
category:サーバ全般

まずやりたかったことは

・VPNが切れていたら自動接続。接続していれば何もしない

・定期実行時、コマンドプロンプトのウインドウを表示させない

・上記を出来る限りシンプル

です。

これでOKみたいな情報がイマイチよくわからなかったので、ちょっとまとめてみました。

> read more


JavaScriptを始めた理由

2020/08/13 20:00
category:サーバ全般

いや別にプログラマでもないしSESやSIerやってるわけでもないから、ずっとPerl使いで時代に置いて行かれてもいいかなって思ってたんです。

だがしかし、会社でそれなりに皆でやろうとなるとやっぱ何か選定しなくてはいけなくなりました。

で、最近触り始めたJavaScript。

昔の認識は、ブラウザにくっついてる、WEBでなんか凝ったことしたい時にコピペして使う言語だよねーって思ってました。

反省しました。

バックエンドでLinuxで動かしたいよぅ → Node.js

フロントエンドでブラウザで動かしたい! → Ajaxとか

流行りのビジュアルプログラミングってなんぞ → NodeRED

Windowsアプリやってみたい → Electron

スマホアプリも作れちゃう・・・? → ReactNative や NativeScript

なにこれ、どこでも動くじゃん・・・

やっぱ慣れてるPerlでゴリゴリ書くのは楽だけど、ちょっとJavaScriptも勉強中であります。


サーバを運用しながらインターリンクによる快適なテレワーク環境を実現させる

2020/05/18 20:00
category:サーバ全般

―――――――――――――――――――――――――――――――――――――――

2020/5/28追記

ZOOT NATIVEでIPv4固定IPアドレスサービスが開始されたので、

こんなことしなくても固定IP使えるようになりました・・・・。

しかしまあ、PCからのアクセスで固定IPが身バレしないというメリットがあります。

―――――――――――――――――――――――――――――――――――――――

まずどういうことかっちゅうと、インターリンクの「ZOOT NEXT」を使っていました。

サーバを運用しているので、固定IPが必要なんですが1,320円とすごく安い。

ただ、自宅からテレワークをする機会が増えたんですが、リモートデスクトップが切れまくって混雑時の回線の遅さに耐えられなくなりました。

同サービスによる「ZOOT NATIVE」を使うとIPv6経由で接続できる為早くなるとの事なので追加で契約。

今まで使っていたIPv4 PPPoE接続と、新しく接続するIPv6 IPoE環境を併用させる必要がありました。

ルータの設定にだいぶ苦戦しましたが、現在はかなり快適です。混雑時って何って感じです。

ちなみにYAMAHAの対応機種はDS-Lite対応ルーター NVR500 NVR510 RTX830 RTX1200 RTX1210 となっていてFWX120が無かったんですが、無事接続できちゃいました。

不安だったのでNVR500も中古で買ってしまいましたが、同じようなコンパネだったりするのでFWX120でもファームウェアを最新にすれば全く問題なさそうです。※自己責任で。

設定方法についてはNVR500の設定マニュアル と一緒でした。

そんなわけで以下構成図設定を若干説明したいと思います。

インターリンクによる快適なテレワーク環境を実現させる

ちなみに職場からのVPNは別途職場で提供されているVPNサーバ&クライアントなのでFWX120側のVPNではありません。

> read more


[Node-RED]配列の要素を取り出しながらループ

2020/04/27 20:00
category:サーバ全般

配列の要素を取り出しながらループ

msg.payload.shift() で配列の先頭を取り出す

payload.length で配列の長さを取得

でループさせれば出来ます。

以下フロー

> read more


[Node-RED]SeleniumでWEBスクレイピング ~Node-REDで操作編~

2020/04/25 12:00
category:サーバ全般

前回でサーバ側の準備が整ったので、実際にNode-RED側から操作してスクレイピングします。

Node-REDにSeleniumノードを追加したらポチポチしていきます。

Remote URLはサーバを指定します。同一サーバであれば

http://localhost:4444/wd/hub

になりますね。

であとは、実際のWEB操作をなぞって配置していきます。

テキストボックスやボタンなどは、XPath指定の方が楽だと思います。

Firefoxでの取得方法は

・F12を押おすと、画面下に開発モード用の画面が開きます。

・タブでインスペクタを選択、HTML内のソースをポチポチすると実際の画面で該当箇所がわかるので

 選択したい項目まで移動します

・右クリックのコピー → XPath(X) を選択すると、クリップボードにXPathの値が入ります。

・F12押して閉じる

で取得できます。

以下のフローは

【Seleniumサーバに接続する】~【IDとパスワードを入力してボタンを押す】~【移行した先の該当テキスト欄をデバッグに出力】~【画面キャプチャを行う】~【ブラウザを閉じる】~【キャプチャファイルを添付としてメールを送信】

【メール送信の完了を確認】~【キャプチャファイルを消す】

までの一連の操作です。

Seleniumのノードサンプル

VNCなどでサーバ側にGUIログインしてると、実際にブラウザ開いて移行して閉じるまでの

動作確認が視認できるので面白いです。

以下フロー

> read more


[Node-RED]SeleniumでWEBスクレイピング ~Serverインストール編~

2020/04/15 20:00
category:サーバ全般

Node-REDでそろそろWEBスクレイピングをしたいと思います。

これができると、RPAに一歩近づいた気分になれます。

あまり選択肢はなく、Seleniumを使うのがよさそうのなので実験してみました。

が、Seleniumサーバ周りをインストールするのがちょっとめんどくさそうなのでDockerでデプロイする方法がよさそうでした。

Selenium構成イメージ

~ Dockerインストールは略 ~

docker run -d -p 4444:4444 -p 5900:5900 -v /dev/shm:/dev/shm selenium/standalone-firefox-debug

以上・・・! 上記はFirefoxのパターンの為、Chrome等の場合は別のモノを指定します。

https://github.com/SeleniumHQ/docker-selenium

debugを使うと、x11vncが立ち上がってる様子なのでVNCビューア等で5900を指定してログインする事が可能です。

あとは、Seleniumのサーバとブラウザを接続するドライバ、ブラウザが入っています。

GUIにログインすると、実際の操作しているブラウザの挙動が確認出来ます。

解像度を変更するには、Docker側の環境変数用ファイルを修正します。

/var/lib/docker/containers/コンテナID/config.v2.json

SCREEN_WIDTH ⇒幅

SCREEN_HEIGHT ⇒高さ

これでサーバ側の準備は整いました。


[Node-RED]フォームを作り、Postで送信し受け取って表示させる

2020/04/02 20:00
category:サーバ全般

HTML編

Postで送信されたデータは、

msg.payload.【postデータの名前】

で簡単に受け取れます。

まずはシンプルなところから。

フォームを作り、Postで送信し受け取って表示させる

以下フロー

> read more


[Node-RED]SSHで自動ログインしてコマンドを叩き、出力結果をWEBで表示したい編

2020/03/23 20:00
category:サーバ全般

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2020/4/27 追記

node-red-contrib-ssh-v2-reconnection

ですが、2個以上設置した時点で挙動がおかしいのでやめました。

現状は直接execノードとsshpassコマンドで実装しています。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

そしていきなりハマった。すでにくじけそう。

まず、追加ノード:node-red-contrib-ssh-v2-reconnection を利用してみました。なんか他のがうまくいかなかったぽいので。

実行するコマンドはmsg.payloadに入れて渡せばいいんですが、実行後の出力結果を取る情報に関しては全く記載がない。

Usage

Input: msg.payload has to contain the command.

Output: none

て書いてある。none?! どういう事なんだぜ・・・。ノードのソースコードをみたら、msg.stdoutで取れそうなのでdebugで確認した所、恐らくいけそうでした。

ただ、その出力結果をWEBで表示できない。

色々調べたところhttp getが実行された場合、 .req と . res というパラメータができ、それを元にhttpレスポンスを返す仕組みぽいです。これが消えると No response object というエラーがでてうまくいきません。

Node-REDでSSH①

SSHノードを経由するとこれが消えてしまうので、一旦フローの変数に入れてSSHを実行し、.reqと.resを戻してからhttpレスポンスするという荒業でなんとかできました。

もうちょっとスマートなやり方がある気がしてならないけど、いかんせん情報が少ない。これでいいのかすらわからない。Javascriptよく知らんし。

Node-REDでSSH②

まあまだ触り始めただけなので、空いた時間で進めていこうと思います。

以下フロー

> read more


[Node-RED]CentOS7にインストール編

2020/03/17 21:00
category:サーバ全般

社内の業務をそろそろできるところから自動化していきたいのですが、UiPathはあまりうちの会社にはマッチしなかったです。お役所仕事とかにはとてもいいかもしれないけど。

まあ自動化の前に、小さい単位で効率化が必要だと思ってます。

とあるRPAサービスがあって、ベースはNode-REDで動いていました。まずはOSSのNode-REDで出来る範囲で理解を深めようかと思います。

今回はインストール編です。

(以下全てrootにて)

〇最新のnodejsを指定してインストール※今回は13入れました。

curl -sL https://rpm.nodesource.com/setup_13.x | bash -
yum install -y nodejs

〇epel経由でnpmをインストール

yum install epel-release
yum install npm --enablerepo=epel

〇node-redをインストール

npm install -g node-red

〇起動確認

node-red

で起動し、

http://IPアドレス:1880

で接続できる事を確認、CTRL+Cで抜ける。

〇systemctlに登録します。

githubに転がっているものはraspi用だったりしたので、そのまま使えませんでした。

その為、ExecStart行は実際にいれた環境に合わせる必要があります。

事前にターミナルにて、

/usr/bin/node --max-old-space-size=128 /usr/lib/node_modules/node-red/red.js -v

が起動できる事を確認しても良いかもです。

vi /etc/systemd/system/node-red.service
[Unit]
After=syslog.target network.target
Documentation=http://nodered.org/
[Service]
Environment="NODE_OPTIONS=--max-old-space-size=128"
Environment="NODE_RED_OPTIONS=-v"
ExecStart=/usr/bin/node $NODE_OPTIONS /usr/lib/node_modules/node-red/red.js $NODE_RED_OPTIONS
WorkingDirectory=/root/.node-red/
User=root
Group=root
Nice=10
SyslogIdentifier=Node-RED
StandardOutput=syslog
Restart=on-failure
KillSignal=SIGINT
[Install]
WantedBy=multi-user.target

〇systemctlのdaemon-reloadと起動確認

systemctl daemon-reload
systemctl start node-red
systemctl status node-red

〇完成!

Node-RED画面

ここからがスタート・・・!


[ category:サーバ全般 ] [ page:1 ]
Next Page >