Hatena::ブログ(Diary)

つれづれなるままに

つれづれなるまま、興味のある内容を、独断と偏見で書いているブログ。
時にはパソコン、時にはバイク、趣味まるだしの今回は…

■2018.6.18 (月)

シェル関数で ip2long と long2ip 実装

久しぶりにシェル(bash)上で ip2long / long2ip を使いたくなって、関数 (function) として自己実装。

ロングIPアドレス - つれづれなるままに

どっちもサニタイズがきちんとできてないし、ちょっと無駄があるけど、分かりやすさ優先で処理。

仕事に使う方は、正規表現で IP アドレスをチェックすること。

ip2long 関数
ip2long() {
    ## argument check.
    # Dot count
    # 数字以外(ドットと改行)で4文字と異なる場合に NG
    iNum=$(echo $1 | sed 's/[0-9]//g' | wc -c)
    [ "${iNum}" -eq "4" ] || return 1

    # Octet input
    iOct1=$(echo $1 | awk -F"." '{print $1}')
    iOct2=$(echo $1 | awk -F"." '{print $2}')
    iOct3=$(echo $1 | awk -F"." '{print $3}')
    iOct4=$(echo $1 | awk -F"." '{print $4}')

    # Octet caliculation
    nOct1=$(expr ${iOct1} \* 256 \* 256 \* 256)
    nOct2=$(expr ${iOct2} \* 256 \* 256)
    nOct3=$(expr ${iOct3} \* 256)
    nOct4=$(expr ${iOct4})
    nOct=$(expr ${nOct1} + ${nOct2} + ${nOct3} + ${nOct4})

    echo "${nOct}"
    return 0
}
long2ip 関数

ip2long 関数を利用するので、必ず ip2long の後に記述すること。

long2ip() {
    ## argument check.
    # Numeric count
    # 数字以外の場合はエラー終了
    expr $1 + 0 > /dev/null 2>&1 || return 1

    # 小数点は全て切り捨て
    iOct1=$(expr $1 \/ 256 \/ 256 \/ 256)
    nOct1=$(expr $1 - $(ip2long ${iOct1}.0.0.0))

    iOct2=$(expr ${nOct1} \/ 256 \/ 256)
    nOct2=$(expr $1 - $(ip2long ${iOct1}.${iOct2}.0.0))

    iOct3=$(expr ${nOct2} \/ 256)
    nOct3=$(expr $1 - $(ip2long ${iOct1}.${iOct2}.${iOct3}.0))

    iOct4=${nOct3}

    echo "${iOct1}.${iOct2}.${iOct3}.${iOct4}"
    return 0
}

■2018.6.17 (日)

久々に Windows が恐ろしいと思った日

それなりに Windows を使い慣れていて、あまり地雷にハマる様なことが少なくなってきているんだけれど、時折やらかすのが自分だなぁと……

2in1 Windows タブレットPCを利用しているのだけれど、外出前には自宅 Wi-Fi でアップデート後、外出先ではテザリングを利用している状況。

今回もアップデートを済ませてから持ち出したんだけど、タイミング的に Windows Update が来てしまって、テザリング中にいきなり 2.6GB ものダウンロードが発生して今月の通信量をめちゃくちゃ圧迫されてしまって涙目。

ちなみに、パケットパックは「XiデータMパック」で、5GB 制限。

繰り越しあり。

テザリングでも追加料金なし。

5月の通信量が 3GB 未満で、6月への通信量の繰越分 2GB がなければ、なにげにアウトだった模様。

月の中ほどで制限がかかったかもと考えると、恐ろしい……。

いや、1,000円ほどで 1GB の追加をすれば使えなくはなかったんだけど、Windws Update のために追加というのもねぇ。

ひとつ上のランク「ウルトラデータLパック」だと、月に 20GB まで OK だけど、こちらはテザリングするために 1,000 円の追加料金が必要で、併せて 7,000 円ほど必要に。

微妙すぎる料金体系だよね。。。


とりあえず、反省と備忘を兼ねて、通信量を制限する方法をメモ。

参照先

http://www.itmedia.co.jp/mobile/articles/1804/08/news019.html

スマホ側

テザリング設定に変更なし。

Windows 側

テザリング接続中のときは、タスクトレイからインターネットアクセスのプロパティを開いて、「従量制課金接続として設定する」のスイッチをオンにする。

ついでに、「データ制限の設定を変更する」から「制限の編集」を開いて、

・制限方法:毎月

・毎月のリセット日:1

・データ通信料の上限: 3.0 GB

にしておく。


ドコモのリセット日は月末なんだけど、1〜28の数字しか選べなかったんだよね。

28 を選択したら、必ず月末なんだろうか?

1を選択しているので月初の夜(2日の朝)になっていることだけ注意しておこう。


そうそう、

ショートカット Win+X から「設定」を開いて、「ネットワークとインターネット」を開く。

ここに「Wi-Fi」があるので選択し、「既知のネットワークの管理」を開く。

ネットワーク接続先としてスマホのテザリング AP を登録したときの名前があるはずで、これをクリック→プロパティ表示させれば、あとの設定方法は上記の通り。

■2018.3.25 (日)

そうだメンテをしよう

気温は、まだ寒いものの15℃を超えている。

バイクは汚れていて、見るからに物悲しい。


うむ。洗車ついでにメンテしよう。


お昼過ぎから洗い始めて、3台とも終わったのが 15:00 くらい?

浮いていた点サビをスチールウールで落としたり、緩んでいたネジを締め直したりしてたら、結構時間を使った。

軍手をクロスがわりに使ってるんだけど、指で触ったネジがヌルっと動く感触はビビるね。

締め直さずにそのままだったら、走行中に落とすことになってた。

緩んでいたのはマフラーのエンジン排気側。

洗車大事。超大事。再確認。


もっとも、Magna50 のシーシーバーは、固定用ネジが 1 本どっかいってたけど。

緩んでいただけでまだ付いてたネジを増し締め。

結局、ネジは 1 本紛失、4 本緩んでいた。


考えてた作業

  • 洗車
  • ワイヤへの注油/グリスアップ
  • ヘッドライトパーツ交換
  • ブレーキフルード交換

やった作業

  • 洗車
  • ネジの増し締め(Magna50のみ)
  • ワイヤへの注油/グリスアップ(Magna50のみ)
  • ブローバイホースから水抜き(Magna50のみ)

うーん、丁寧にやれるのが自分でやるメンテの醍醐味だけど、ちょっと時間かけ過ぎたかも。

■2018.2.24 (土)

PageMonitor

ぱげもにとrって出てきてちょっとげんなりしつつ、Web サイトのページ更新確認用 Chrome 拡張プラグイン。


https://chrome.google.com/webstore/detail/page-monitor/ogeebjpdeabhncjpfhgdibjajcajepggtitle=PageMonitor]


はてなとか確認用サイトとかあったんだけど、どうにも使い勝手が自分に合わないので試してみたこちら。

うん、Chrome は毎日のように使うし、常に起動させっぱなしでもある。

これはいいかも…っていうので、ちょっとお試し。


定期的に更新を目視でチェックしてたページがあって、さすがに面倒になってきちゃったので導入。

うん、いい感じ。

■2018.2.12 (月)

Raspberry Pi 3 の CentOS 7 で Let's Encrypt

最近、やたらとグローバルIPアドレスの変更が多く、インターネットからアクセスするのが大変。

1日に3回以上とか、ISP は何を考えているんだろうか。

(いや、まぁ Global IP アドレスの静的設定オプションを 8千円で提供している以上、お金儲けなんだろうけど)


で、今使っている ieServer は、ロシアからの不正な利用対策で不安定らしく、IPアドレスを更新しても DNS に反映されない状況。

定期的に SOA を見ているけど、シリアル値がアップするのが 2 時間くらいの間隔。

キャッシュ更新時間が 180 秒でも、元データが更新されてないから意味がないよね。

翌朝には更新されているので、実質的に 1 日 1 度の更新。


ってことで、一度 ISP の IP アドレスが変更されると 1 日とか待ってなきゃいけないし、それでは Dynamic DNS のサービスとして破綻しているので他のところを検討。

といっても、それほど多くないので MyDNS を使ってみる。


こちらの更新条件としては、1週間程放置したら DNS サービス提供を停止、1か月で登録データの破棄。

でも、更新方法を見る限り、メールの確認設定で更新が出来るっぽいので、普通に使う限りは問題なさそう。


ということで早速 https://www.mydns.jp:MyDNS にアクセスしてアカウント作成。

欲しいドメイン名を登録して、アカウントを Becky! Ver2 の POP3 設定。

更新処理が行われていることを確認。


その後、Raspberry Pi で Web サービスを提供。

その Raspberry Pi に 80 と 443 を開放して、インターネット側から 80 でアクセスできることを確認。

https://letsencrypt.jp/:Lets Encrypt] を使うために、https://letsencrypt.jp/ を参照して Certbot クライアントを導入。


うがー!!


Raspberry Pi に CentOS 7 を導入したのが悪かったのだろう。

Raspberry Pi 用の CentOS 7 では、EPEL が使えない。

なぜなら ARM の CPU なので、リポジトリに EPEL 関連のパッケージが無い。

つまり、CentOS7 にも関わらず、以下のコマンドが使えない。


sudo yum install epel-release
sudo yum install certbot python-certbot-apache

使えないという表現をもっと正確にいうと、実行しても「そんなパッケージは無い」とか、そんな感じのメッセージがでて終わるだけ。


正攻法はあきらめて「その他の UNIX 系 OS」のやり方を参考にした。


$ cd /usr/local/src
$ sudo wget https://dl.eff.org/certbot-auto
$ sudo chmod a+x certbot-auto
$ sudo ./certbot-auto

がーっと必要な rpm がインストールされて、暗号化に必要な情報の入力のためのプロンプトが表示された。

メールアドレスとか、取得したドメインとか、入力した。

ちょっとエラーはあるけど、とりあえず SSL でアクセスできるようになったっぽい。

通信を暗号化するにはサイト設定をもう少しいじらないとダメだけど、自宅サーバで 443 ポートの通信ができるとか、ちょっと感動。