Adobe Creative Suite2が無償で使用できるようになっていることに気づいた話

Adobe Creative Suite2は無償で利用できるようになっていたことに今更気づいた。
サポートもないし、新しいOSでの動作保証もされていないが、Adobe IDの登録さえすれば、PDF加工ソフト Acrobat Pro、デザインソフト Photoshop、illustratorやDTPソフト InDesign、動画編集ソフト Premiere等が利用できるのは素晴らしい。
ダウンロードURL

Rasberry Pi 2で定期的に温湿度センサーの情報を送信する

/etc/crontabと/etc/cron.d設定ファイルの書き方を参考にプログラムの実行をスケジュール化する。
/etc/cron.d/send_temp
と登録し、下記を保存する。
#8~17時を除いた6~23時に毎時0時に送信する
0 6-7,18-23 * * * pi /home/pi/iot_source/send_temp.py 12> /home/pi/debug.txt
#土日は8~17時も毎時0時に送信する
0 8-17 * * 0,6 pi /home/pi/iot_source/send_temp.py 12> /home/pi/debug.txt
#5分ごとにセンサデータを収集する
*/5 * * * * pi /home/pi/iot_source/get_temp.py 12> /dev/null

Rasberry Pi 2で温湿度センサーの情報をZabbixサーバに送信する

Rasberry Pi 2で収集した情報をZabbixサーバに送信するためには大きくは2つの方法がある。
・Zabbixエージェントをインストールしてデータを送信(サーバから見ると収集)する方法(パッシブチェックとアクティブチェックというデータの収集のトリガーが異なる2つの方式がある。詳しくはこちら
・zabbix_senderコマンドを利用してデータをサーバに送信する方法
前者の方式は、エージェントを利用するので、サービスを常に起動しておかなければならないということと、ポートを待ち受けしないといけないことから、IoTディバイスとして節電して長く使いたい要求と、セキュリティを担保したい(エージェントの脆弱性によって問題が起こり得るか、DoS攻撃の対象になりうる)ことから後者を採用することにした。
ただ、zabbix_senderはRasberry Pi2を動かしているRaspianOSではちょっと導入が面倒。
Zabbix Server側の設定はこちらを参考にしてみるとよい。
これから始めるZabbix Sender(2) Raspberry Pi の温度データを送るには?
作成したソースはこんな感じ
配列に一度格納してまとめて1回のコマンドで実行することで通信回数を減らしてみた。
#!/usr/bin/env python
import RPi.GPIO as GPIO
import dht11
import time
import subprocess
from datetime import datetime
now=time.time()
Zabbix_Server=”(ZabbixサーバのIPアドレス)”
Host_Name=”(Zabbixサーバに登録したホスト名)”
#Zabbixサーバに下記アイテムを2つ登録している必要がある
Temp_KeyName=”sender_temperature”
Humi_KeyName=”sender_humidity”
#define GPIO 14 as DHT11 data pin
Temp_sensor=14
try:
GPIO.setmode(GPIO.BCM)
instance = dht11.DHT11(pin = Temp_sensor)
while not ‘result’ in locals() or result.humidity==0:
result = instance.read()
if result.is_valid():
print(“Tem:”+str(result.temperature)+” C Hum:”+str(result.humidity)+”%”)
send_data = []
send_data.append(Host_Name + ” ” + Temp_KeyName + ” ” + str(int(now)) + ” ” + str(result.temperature))
send_data.append(Host_Name + ” ” + Humi_KeyName + ” ” + str(int(now)) + ” ” + str(result.humidity))
check = subprocess.check_call(‘echo “‘ + “\n”.join(send_data) + ‘” | zabbix_sender -z ‘ + Zabbix_Server + ” -T -i -“, shell=True)
except KeyboardInterrupt:
pass
finally:
print check

SSDドライブを最適化する

SSD(ソリッドステートドライブ)は、ハードディスクよりも高速にアクセスできるが、書き込み、消去頻度が高いとアクセス速度が落ちてしまう。
Linuxでは、fstrimコマンドを使用することでWindowsでいうところのデフラグを実行することが出来、アクセス速度向上が見込める。
コマンド例)
fstrim /dev/sda

ban4ipインストールしてみました

オープンソースアンカンファレンス金沢2016でT.Kabuさんからのご紹介のあった
fail2banをやめてBan4ipにしませんか?
を早速試してみました。
ApacheやSSH、postfix、dovecot等のログを解析して失敗を検知した接続元のIPアドレスをiptablesに書き込みしてフィルタリングするデーモンになります。
IPv6にも対応しているところが優れています。
CentOS7の環境でしたが、問題なく導入でき1日間で17回BANできています。
インターネット環境にサーバを公開するということは常に攻撃にさらされていると感じました。
自動BANツールを導入していない方はぜひ導入してみるとよいと思います。
なお、サーバを再起動する際には、banした設定が消えてしまうので /sbin/service iptables save を忘れずに!

runasコマンド

Linux のsudoコマンドに該当するWindowsコマンド
runas /user:hogehoge “cmd /K”
と実行するとパスワードが要求される。
認証が成功するとコマンドプロンプトが開いて、hogehogeユーザとしてコマンドを実行できる
サイレントに実行する場合には、
runas /user:hogehoge “cmd /C (スクリプト名)”
になる。
ドメインユーザもできるので、ADにログインしている状態で別ユーザで実行が可能な点は便利。

logrotateを使う

ログファイルによってディスクフルにしないようにするためには、logrotateを利用するわけだが、一部ハマったことがあったので、記録しておく。
1.logrotateを実行すると怒られる
$ sudo /usr/sbin/logrotate /etc/logrotate.conf
error: skipping “(ログファイルのパス)/logs/debug.log” because parent directory has insecure permissions (It’s world writable or writable by group which is not “root”) Set “su” directive in config file to tell logrotate which user/group should be used for rotation.
どうやらログが記録されているフォルダの権限が、rootユーザではないことが原因のようだ。(腑に落ちない点はあるが。。。。)
設定ファイルにsu設定を行っておき、ログの書き込みを行うことが可能なユーザー、グループを指定する。
$ cat /etc/logrotate.d/hogehoge
(ログファイルのパス)/logs/debug.log {
daily
rotate 7
missingok
notifempty
create 0664 apache apache
su apache apache
nodateext
}
2.ローテートされたファイルに日付が付加される。
昔は、ローテートされたファイルに数字が付加されていたような気がしたが、Cent OS 7では、ファイル名-YYYYMMDDになっている。
見やすいのだが、プログラムでログファイルを自動解析しようとするといささか不便である。
/etc/logrotate.conf
に dateext が設定されていることが原因。これをコメントアウトするか、個別のログで解除したい場合には、上記例のように nodateext を設定すればよい。
参考サイト:
ログローテートしない – 揮発性のメモ
logrotate パーミッション エラー (r271-635)

Windowsで”.”から始まるファイル、フォルダを作成する

「第2回 Bluemix × SoftLayer ユーザーグループ合同勉強会@北陸~IBMクラウドサービスを使って遊ぼう~」に昨日参加してきました。
ハンズオンは2回目の参加ですが、なかなか勉強になります。
.htaccess とかWidowsで作成しようとすると
「ファイル名を入力してください」
と怒られる。
入力してるよー!と突っ込みながら、泣く泣く拡張子をつけてそれからリネームしていた。
ところが、最後に”.”を付けるとリネームせずに作成できることが判明。
“.htaccess”を作りたければ、”.htaccess.”と入力してファイルを作ると作成できる。
フォルダも同じ。
もしや、Ctrl+Escなみの隠し技?それとも当たり前?

mbox形式のデータをMaildir形式に変換する

サーバ移行作業中に誤ってメールをmbox形式で/var/spool/mail/(username) で受信してしまっており、Maildir形式に移行する必要が発生した。
優れたツールがあったので、紹介しておく。
wget http://perfectmaildir.home-dn.net/perfect_maildir/perfect_maildir.pl -O /usr/local/bin/perfect_maildir.pl
cd /usr/local/bin/
chmod u+x perfect_maildir.pl
./perfect_maildir.pl /home/(username)/Maildir < /var/spool/mail/(username) >> /tmp/migrate-maildir.log 2>&1
root権限での実行を想定しています。
上記を実行すると、/tmp/migrate-maildir.log には、
Inserted NNN messages into maildir /home/(username)/Maildir/ in N seconds
というログが表示され、実際にNNN件のメールデータが移行されています。