日曜エンジニア

仕事・趣味のメモ置き場です。皆様のお役に立てれば幸いです。

cronでハマった

昨晩、サーバのcron.dにコマンドを仕込んで帰ってたら、翌朝に出社して動いてなくてショック。そんな覚え書き。

# cat /etc/cron.d/ls_chk
0 0-23/6 * * * root /bin/ls />/tmp/`date '+%Y%m%d%H%M'`

うまくできない。。。

# cat /var/log/cron
(root) CMD (/bin/ls>/tmp/`date '+)

あれ?コマンド途中で千切れてる、、、?

cronは、%は誤認識するらしい。
crontabでは'%'をエスケープしなきゃいけない - 駄日記
 
こちらが正解でした。

# cat /etc/cron.d/ls_chk
0 0-23/6 * * * root /bin/ls>/tmp/`date '+\%Y\%m\%d\%H\%M'`

それにしても、dateコマンドの引数ってよく忘れる。精進しないと。

2015/6/4 追記)
上記の正解で記載しているcronにエスケープ処理が入ってませんでした。

【テレビでISOファイル再生】PS3 Media Server 導入の記録

今更ながら、TVでNAS上のイメージファイルを観れるようにしたいと思い立ちました。
NAS(ISO格納先)→CentOS(NASをマウント+PMS)→PS3→TV

環境

  • OS CentOS6.6(runlevel:5)
  • NAS Buffalo Link Station LS410DX
  • PS3

参考サイト
PS3 Media Server
PS3 Media Server (PMS) まとめwiki - DL&インストール
うにゃ主人のEDUCE生活 | LinuxでもOK! PS3 Media Server

必要そうなもの

作業ログ

  1. java
# yum list installed | grep java
java-1.6.0-openjdk.x86_64
java-1.7.0-openjdk.x86_64

既にインストールされてました。とりあえず、スルー。

  1. rpmforgeリポジトリ追加
# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
# rpm rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm 

MPlayerffmpegをインストールする事前準備でrepoforgeをレポジトリに登録。
皆様の環境に応じて登録レポジトリは多少違うのでご注意ください。
レポジトリ登録の手順はそこら中にあるのでググってください。

  1. MPlayer
# yum --enablerepo=rpmforge install mplayer

特に問題なく。

  1. ffmpeg
# yum --enablerepo=rpmforge install ffmpeg 

特に問題なく。

  1. PMS
# wget http://sourceforge.net/projects/ps3mediaserver/files/pms-1.90.1-generic-linux-unix.tar.gz
# ls -l
合計 15420
-rw-r--r--. 1 root root 15789602  8月 18 00:06 2013 pms-1.90.1-generic-linux-unix.tar.gz
# tar xvfz pms-1.90.1-generic-linux-unix.tar.gz
# cd pms-1.90.1
# chmod +x PMS.sh pms.jar
# vi PMS.conf
folders=/NAS ←公開するディレクトリのパス
hostname=192.168.1.xx ←サーバーのIPアドレス
network_interface=eth0 ←インタフェースを指定

以上。後は、PMS.shを実行。

# ./PMS.sh
RROR 2015-05-17 00:19:46.735 [mencoder-62] Error initializing process: 
java.io.IOException: Cannot run program "mencoder": error=2, そのようなファイルやディレクトリはありません

PS3でサーバを認識してくれた!
が、肝心のISOの再生を実行すると、上記のエラーがターミナルに。。。mencoder?がないよって言ってるのかな?パス問題だといいけど、適当に最新の入れてるから、相性問題とかだと面倒だな。

とりあえず、今日はここまで。
そして、できれば大きなTVが欲しいです。

【nasneノススメ】1.企画立案【外出先からの番組保存】

目的

今回のネタは、自宅のnasneの録画番組をインターネット越しに
スマホからストリーミング再生、ダウンロードできるようになったら出張の暇つぶし便利じゃない?というものです。
方式をメインに書きますので、ソフトウェアの実装方法は先人達の英知を紹介させていただく程度にさせていただきます。

また、下にある背景はnasne購入までの流れなので、読み飛ばしていただいて結構です 笑

ご注意

2014年9月25日以降、nasneのバージョンアップに伴い、録画番組の外出先(WAN越し)のストリーミング再生は可能になっています。

外出先でいちいちスマホにダウンロードしなくていい、ストリーミング再生のみでオッケー。という方が大多数だと思います。そういう方は、皆様nasneを是非ご活用ください。
(このネタを実施したのが2014年前半だったというのもありますが、
私の場合、出張先のホテル/カフェのfreewifi等を使って番組をダンロードし、新幹線、飛行機、バス等の中でスマホで再生する。という運用でキャリア回線の通信量を抑えたいという目的もあったので、今から書く方法でダンロードもできるというところは、ひとつポイントかなと思ってます。)

ご参考

iOS版TV SideViewがアップデート、nasne経由の外出先視聴に対応 – すまほん!!

背景

残業やトラブル対応続きで好きな番組をよく見逃していました。
そのため2014年頭、以前からPS3を所有していたということもありnasneを購入しました。使い方は簡単で、LANケーブルとPS3とアンテナと電源を繋いだ後、電源ボタンぽちー。はい、終わり。無事、好きな番組を見逃すと言う事態を解決することができました。めでたし。

さて、nasneを導入したことにより、下記+αの効果を得られることができました。

  • 風呂、キッチンで閲覧できるようになった。(ストリーミング再生)

スマホタブレット等にアプリを入れれば、自宅LAN内であればどこでも観れるようになり、キッチン・風呂等でながら見ができるようになりました。この構想を思い立った2014年前半時点では、自宅LAN内のみこの機能は利用可能でした。

nasneはDTCP+という規格に対応しており、1番組10回という規制はあるもののコピーができるそうです。(60分を約5分でコピー)
自宅内でのみこの機能は利用可能です。(多分)

人というのは強欲で何かできるようになると更に便利にしたくなるもので、、、
というところまでが背景です。(目的に繋がります。)

構想イメージ

自宅LANではこんな感じに利用できているから。
f:id:ls-ltr:20150315020353p:plain

外へクライアントを持ち出し、WAN越しに家のnasneからストリーミング再生/ダウンロード、こんな↓のイメージ。
f:id:ls-ltr:20150315020404p:plain

その1 〆

おい具体的な話書けよ。というところですが、執筆が追いつかないので勘弁ください。
とりあえず、その1は計画立案と題して思い立ったところから構想イメージまで書いてみました。
何か認識間違え等あればコメントで教えてください。
多分その2へ続きます。


今回のネットワーク図は下記サイトを利用しております。
Cacoo - Web上でフローチャートUMLなど様々な図を作成 https://cacoo.com

データセンター入館の持ち物。

背景

トラブルや小中案件においてごく稀に間に起こる狭間対応*1で、上流のSEがデータセンタ(以下、DC)に入館することがある。
そんなDC慣れしていない人が持っていて良かったものを理由も含めて箇条書きしてみます。

読者さんの入館されるDCのルールに準拠し、楽しいDC生活をお願いします。

持っていて良かったもの

  • マスク

DCのサーバルーム内は湿度が低い上に、送風が強いため、喉を痛めた経験が何度か。。。

  • パーカー

意外とラックからの風って長時間当たってると疲れるんですね。
あと、床下に潜る時の汚れよけ。(スーツはやめたほうがいいと思います。)

ユニクロ MEN ライトポケッタブルパーカ - UNIQLO ユニクロ

  • ポータブルライト

既に這っている床下のケーブル踏むとシャレにならないので。

  • イヤフォンケーブル

サーバルームってファン音で相手の声が聞こえないので、イヤフォンで聞くようにしてます。

  • 結束バンド

ラック内配線を綺麗にしましょう。

  • クリップホルダ

マニュアル・設計書を読む時や、作業メモを取るときに便利です。

  • 付箋

くるっ丸めてケーブルにペタり、作業中のLANケーブルの一時的なマーキングで使えます。

  • 軍手

思わぬ所で指を挟んだりすると思うので、細かい作業時以外つけた方がいいです。

まとめ

如何でしたでしょうか。他にもオススメアイテムがあればコメントください。
この記事を書くのに、過去の作業を思い返して書いてみましたが、苦い思い出ばかり。
やはり、SEとしてはできれば行きたくない、行かなくて済むように案件を進めたい場所ですね。

*1:これSIerあるあるだと勝手に思ってるのですが、例えばサーバ等のHWはA社、ケーブルはB社、L3/L2SWはC社とバラバラなシステムで、3社共に他社の製品に触れる事ができないポリシーを持っていた・工事日の調整を忘れていた等で発注元のSEがやらざるを得ない状態の対応。

【初心者向け】客先作業で使うと捗るコマンド集

客先でフリーソフトExcelがない環境でのトラブルシューティング、バッチ作成。
そんな時にググっている使っているコマンドを箇条書きに書き出してみた。
なんかもっといいコマンドあるよって人はコメントください。

コマンド結果でループ

>for /f "usebackq tokens=1 " %f in (`findstr  "#" ^<C:\Windows\System32\drivers\etc\hosts`) do ping -n 1 %f

私の十八番。バッチ処理で多用。
上記例はhostsファイル*1に設定されているIPアドレスPINGを疎通するコマンド。

TEXTのカウントアップ

>type hoge.txt | find /c /v ""

エクセルもさくらエディターもないそんな時に。*2

>type hoge.txt | find /c /v "" | find "foo"

hoge.txtの中でfooという単語を含む行をカウントアップ

空いてるドライブレターにマウント

BATを作っているレターを固定してしまうとローカル環境に依存*3して失敗するため色々不便。
レター指定の部分を*にするだけで自動で空いているドライブレターにマウントしてくれる。
この例は、☆☆.△△.××.○○のCドライブをマウントしようとしてる。

>net use * ¥¥☆☆.△△.××.○○¥C$ password /user:USERNAME

NULLに捨てる

ぐぐればどこにでもあるものですが。

>コマンド >NUL 2>&1

時刻正規化

DOSだとUNIXみたいに、echo hoge > `date '+%Y/%m/%d' `.logとか一行でできないので、
以下の通り2行でやるといい感じになります。

>for /F "tokens=1,2 delims=:" %i in ('time /T') do set NOW_TIME=%i%j
>echo hoge > %NOW_TIME%.log

プロンプトに時刻を表示させたいとき

>prompt $T$H$H$H $P$G

作業ログの補完に。

思いついたら、また書きます。

2015月3月1日 また増えたので追記します。

任意のサイズのファイルを生成させたいとき

>fsutil file createnew ファイル名 ファイルサイズ

カレントディレクトリ以下にあるファイル全ての容量が知りたい

>for /f "usebackq tokens=3-4 " %f in (`dir /s /a^| findstr -v /c:"<DIR>" /c:"個の" /c:"ラベルがありません" /c:"です" /c:"のディレクトリ"`) do @echo %g:%f>hoge.txt 2>&1

パソコンのシリアルナンバーを知りたいとき*4

>wmic csproduct get IdentifyingNumber

*1:空改行があると別途対応が必要。

*2:これは対象がCR+LFじゃないと多分できない。

*3:BATでオンコードでドライブレターを固定すると既にマウントされています。とか残念なことになりBATがマウント出来ずにこける。

*4:実機のシールを見ればいいってのもあるんですが、数百台あると面倒なのでBAT化してスタートアップ仕込んだりしてます。