2012年2月19日日曜日

DLNAサーバ(mediatomb)のインストール。(debian6.0)

DLNAサーバのmediatomb を突っ込んだ。
これで、PS3などのメディアプレーヤーから。サーバに保存した
メディアファイル(動画・音声等)を再生できるようになった。

インストール手順はこちらのサイト→Winux/Lindows:Debian squeezeサーバーにMediatombでDLNAサーバー
を参考にした。というか、まんまであるw

mediatomb をapt-get からインストール。
debian-sv# apt-get install mediatomb
/etc/default/mediatomb の編集。
debian-sv# vi /etc/default/mediatomb
ネットワークインターフェース名を指定。
こちらの環境では、eth0を使用しているので、eth0を指定する。
# The network interface for MediaTomb to bind to and for which the multicast
# routing entry should be added; "" if the route shouldn't be added at all.
# For example: INTERFACE="eth0"
INTERFACE="eth0"
次に、/etc/mediatomb/config.xml を編集する。
debian-sv# vi /etc/mediatomb/config.xml
結構長くなるので、修正箇所のみ抜粋。

WEBインターフェースのGUIを有効化。
<ui enabled="no" show-tooltips="yes">
<ui enabled="yes" show-tooltips="yes">
PS3サポートを有効化。
<protocolInfo extend="no"/><!-- For PS3 support change to "yes" -->        .
<protocolInfo extend="yes"/><!-- For PS3 support change to "yes" -->       .
<scripting script-charset="UTF-8">の下に、
<filesystem-charset>UTF-8</filesystem-charset>
<metadata-charset>CP932</metadata-charset>
を追加。
<scripting script-charset="UTF-8">
  <common-script>/usr/share/mediatomb/js/common.js</common-script>
<scripting script-charset="UTF-8">
  <filesystem-charset>UTF-8</filesystem-charset>
  <metadata-charset>CP932</metadata-charset>
  <common-script>/usr/share/mediatomb/js/common.js</common-script>
PS3でDivXを使えるようにする。
<!-- Uncomment the line below for PS3 divx support -->
<!-- <map from="avi" to="video/divx"/> -->
<!-- Uncomment the line below for D-Link DSM / ZyXEL DMA-1000 -->
<!-- <map from="avi" to="video/avi"/> -->
<!-- Uncomment the line below for PS3 divx support -->
<map from="avi" to="video/divx"/>
<!-- Uncomment the line below for D-Link DSM / ZyXEL DMA-1000 -->
<map from="avi" to="video/avi"/>
以上でとりあえず設定は終了。mediatomb を再起動させる。
debian-sv# /etc/init.d/mediatomb restart
正常に再起動ができたら、WebUIがきちんと動くか確認する。
こちらの環境では、URLはhttp://debian-sv:49152 となった。
あとはWebUIから共有したいファイルやフォルダを選択すれば良い。

2012年2月18日土曜日

UT-VPNクライアントの自動起動設定。(debian6.0)

ひと通り設定が終わり、接続確認ができたところで
UT-VPNクライアントも自動起動するように設定しておく。

スクリプト /etc/init.d/utvpnclient を作成、実行権限を付与。
debian-sv# vi /etc/init.d/utvpnclient
debian-sv# chmod 755 /etc/init.d/utvpnclient
スクリプトはこんな感じにした。
ネットワークインターフェースはデーモン起動時に作成されるので、
デーモン起動後、自動的にIP設定するようにした。
ちなみにインターフェース名はUT-VPNクライアントの設定によって変わるので注意。
#!/bin/bash
# chkconfig: 2345 99 01
# description: PacketiX VPN Client 2.0
DAEMON=/usr/utvpnclient/utvpnclient
LOCK=/var/lock/utvpnclient
INTERFACE=utvpn_vlannic
IPADDRESS=192.168.100.1
NETMASK=255.255.255.0
BROADCAST=192.168.100.255

test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
exit 0
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
sleep 3
ifconfig $INTERFACE $IPADDRESS netmask $NETMASK broadcast $BROADCAST
exit 0
あとは、utvpnserverの時と同じようにchkconfigで自動起動登録する。
debian-sv# chkconfig --add utvpnclient

UT-VPNクライアントの設定。(debian6.0)

UT-VPNクライアントの設定をする。

utvpnclient を起動しておく。
debian-sv# utvpnclient start
utvpncmdを起動する。
debian-sv# utvpncmd
2を選択。
utvpncmd コマンド - SoftEther UT-VPN コマンドライン管理ユーティリティ
SoftEther UT-VPN コマンドライン管理ユーティリティ (utvpncmd コマンド)
Version 1.01 Build 7101   (Japanese)
Compiled 2010/06/27 18:40:28 by yagi at pc25
Copyright (C) 2004-2010 SoftEther Corporation.
Copyright (C) 2004-2010 University of Tsukuba, Japan.
Copyright (C) 2003-2010 Daiyuu Nobori.
All Rights Reserved.

utvpncmd プログラムを使って以下のことができます。

1. VPN Server または VPN Bridge の管理
2. VPN Client の管理
3. VPN Tools コマンドの使用 (証明書作成や通信速度測定)

1 - 3 を選択: 2
接続先を聞かれるが、localhostなのでそのままEnter.
接続先の VPN Client が動作しているコンピュータの IP アドレスまたはホスト名を指定してください。
何も入力せずに Enter を押すと、localhost (このコンピュータ) に接続します。
なお、このコマンドでは SoftEther UT-VPN Client を管理できますが、PacketiX VPN Client は管理できませんのでご注意ください。
接続先のホスト名または IP アドレス: 

VPN Client "localhost" に接続しました。

VPN Client>
仮想NICを作成する。
VPN Client>niccreate
NicCreate コマンド - 新規仮想 LAN カードの作成
仮想 LAN カードの名前: vlannic

コマンドは正常に終了しました。
接続設定を作成する。
VPN Client>accountcreate
AccountCreate コマンド - 新しい接続設定の作成
接続設定の名前: DEFAULT

接続先 VPN Server のホスト名とポート番号: localhost:****

接続先仮想 HUB 名: DEFAULT

接続するユーザー名: foo

使用する仮想 LAN カード名: vlannic

コマンドは正常に終了しました。
接続するユーザのパスワードを登録する。
VPN Client>accountpasswordset
AccountPasswordSet コマンド - 接続設定のユーザー認証の種類をパスワード認証に設定
接続設定の名前: foo

パスワードを入力してください。キャンセルするには Ctrl+D キーを押してください。

パスワード: ********
確認入力  : ********


standard または radius の指定: standard

コマンドは正常に終了しました。
ひととおり設定が終わったので、いよいよUT-VPNサーバに接続してみる。
VPN Client>accountconnect
AccountConnect コマンド - 接続設定を使用して VPN Server へ接続を開始
接続設定の名前: DEFAULT

コマンドは正常に終了しました。
接続状態を確認してみる。
VPN Client>accountstatusget
AccountStatusGet コマンド - 接続設定の現在の状態の取得
接続設定の名前: DEFAULT

項目                          |値
------------------------------+----------------------------------------
接続設定名                    |DEFAULT
セッション接続状態            |接続完了 (セッション確立済み)
VLAN ID                       |-
サーバー名                    |localhost
ポート番号                    |TCP ポート ****
サーバー製品名                |SoftEther UT-VPN Server (GPL) (64 bit)
サーバーバージョン            |1.01
サーバービルド番号            |Build 7101
接続開始時刻                  |2012年 2月18日(土) 14時22分 9秒
初回セッションの確立時刻      |2012年 2月18日(土) 14時22分10秒
現在のセッションの確立時刻    |2012年 2月18日(土) 14時22分10秒
セッション確立回数            |1 回
半二重 TCP コネクションモード |いいえ (全二重モード)
VoIP / QoS 対応機能           |有効 (使用中)
TCP コネクション数            |2
TCP コネクション数最大値      |2
暗号化の使用                  |はい (暗号化アルゴリズム: RC4-MD5)
圧縮の使用                    |いいえ (圧縮無し)
セッション名                  |SID-*****-*
コネクション名                |CID-65
セッションキー (160bit)       |************************************
ブリッジ / ルータモード       |いいえ
モニタリングモード            |いいえ
送信データサイズ              |10,529 バイト
受信データサイズ              |6,353 バイト
送信ユニキャストパケット数    |43 パケット
送信ユニキャスト合計サイズ    |3,562 バイト
送信ブロードキャストパケット数|4 パケット
送信ブロードキャスト合計サイズ|612 バイト
受信ユニキャストパケット数    |34 パケット
受信ユニキャスト合計サイズ    |2,176 バイト
受信ブロードキャストパケット数|0 パケット
受信ブロードキャスト合計サイズ|0 バイト
コマンドは正常に終了しました。
とりあえず正常に接続できたっぽい。
参考サイト→UT-VPN Web サイト - 筑波大学 VPN オープンソースプロジェクト

UT-VPNサーバの設定。(debian6.0)

UT-VPNのインストールが終わったので、設定にとりかかる。

utvpncmdを起動する。
debian-sv# utvpncmd
1を選択する。
utvpncmd コマンド - SoftEther UT-VPN コマンドライン管理ユーティリティ
SoftEther UT-VPN コマンドライン管理ユーティリティ (utvpncmd コマンド)
Version 1.01 Build 7101   (Japanese)
Compiled 2010/06/27 18:40:28 by yagi at pc25
Copyright (C) 2004-2010 SoftEther Corporation.
Copyright (C) 2004-2010 University of Tsukuba, Japan.
Copyright (C) 2003-2010 Daiyuu Nobori.
All Rights Reserved.

utvpncmd プログラムを使って以下のことができます。

1. VPN Server または VPN Bridge の管理
2. VPN Client の管理
3. VPN Tools コマンドの使用 (証明書作成や通信速度測定)

1 - 3 を選択: 1
接続先サーバを聞かれるので、今回の場合、localhostを入力する。
ただし、ポート443はApacheで使われているため、デフォルトで用意された
他のリスニングポートを指定することにした。(あとで変更も出来る。)
接続先の VPN Server または VPN Bridge が動作しているコンピュータの IP アドレスまたはホスト名を指定してください。
'ホスト名:ポート番号' の形式で指定すると、ポート番号も指定できます。
(ポート番号を指定しない場合は 443 が使用されます。)
何も入力せずに Enter を押すと、localhost (このコンピュータ) のポート 443 に接続します。
接続先のホスト名または IP アドレス: 
サーバ管理モードに入るため、そのままEnter。
サーバーに仮想 HUB 管理モードで接続する場合は、仮想 HUB 名を入力してください。
サーバー管理モードで接続する場合は、何も入力せずに Enter を押してください。
接続先の仮想 HUB 名を入力: 
サーバ管理モードに入った。
helpと入力すればコマンドヘルプが表示される。
ちなみに、コマンドの英字の大小は区別していないようだ。
VPN Server "localhost" (ポート ****) に接続しました。

VPN Server 全体の管理権限があります。

VPN Server>
サーバ管理用パスワードを設定。
VPN Server>ServerPasswordSet
ServerPasswordSet コマンド - VPN Server の管理者パスワードの設定
パスワードを入力してください。キャンセルするには Ctrl+D キーを押してください。

パスワード: ********
確認入力  : ********


コマンドは正常に終了しました。
UT-VPNサーバのリスニングポートを確認してみる。
UT-VPNサーバはデフォルトで443,992,5555のどれかのポートを使用する設定になっている。
他のサービスとポートがかぶってたり、セキュリティを強化したいというときは
これらを自由に編集できる。
VPN Server>listenerlist
ListenerList コマンド - TCP リスナー一覧の取得
ポート番号|状態
----------+------
TCP 443   |動作中
TCP 992   |動作中
TCP 5555  |動作中
コマンドは正常に終了しました。
仮想HUBは最初からDEFAULTという名前のものが作られているので、
今回はそれをそのまま使うことにした。

仮想HUBの選択。以降はHUB管理モードに入る。
hub とだけ入力すれば、サーバ管理モードに戻る。
VPN Server>hub DEFAULT
Hub コマンド - 管理する仮想 HUB の選択
仮想 HUB "DEFAULT" を選択しました。
コマンドは正常に終了しました。
ユーザの追加
VPN Server/DEFAULT>usercreate
UserCreate コマンド - ユーザーの作成
ユーザー名: foo

参加するグループ名: 

ユーザーの本名: foobar

ユーザーの説明: 

コマンドは正常に終了しました。
作成したユーザのパスワードを設定する。
パスワードを登録したユーザは自動的にパスワード認証モードに設定される。
VPN Server/DEFAULT>userpasswordset
UserPasswordSet コマンド - ユーザーの認証方法をパスワード認証に設定しパスワードを設定
ユーザー名: foo

パスワードを入力してください。キャンセルするには Ctrl+D キーを押してください。

パスワード: ********
確認入力  : ********


コマンドは正常に終了しました。
このぐらいでサーバと仮想HUBの設定は終了とする。
参考サイト→UT-VPN Web サイト - 筑波大学 VPN オープンソースプロジェクト

UT-VPNサーバのビルド&インストール(debian6.0)

実家と自分の部屋のサーバ間を接続するために、
UT-VPNを導入してみることにした。
基本的に、公式マニュアルの通りにセットアップすれば、
特に詰まることはないと思う。
公式サイト→UT-VPN Web サイト - 筑波大学 VPN オープンソースプロジェクト

libreadline6-dev,chkconfigをインストール。
debian-sv# apt-get install libreadline6-dev chkconfig
UT-VPNをビルド&インストール。
debian-sv# wget "http://utvpn.tsukuba.ac.jp/files/utvpn/v1.01-7101-public-2010.06.27/Source%20Code%20(Win32%20and%20Unix)/utvpn-src-unix-v101-7101-public-2010.06.27.tar.gz"
debian-sv# tar -xzvf utvpn-src-unix-v101-7101-public-2010.06.27.tar.gz
debian-sv# cd utvpn-unix-v101-7101-public
debian-sv# ./configure
debian-sv# make
debian-sv# make install
/etc/init.d に起動スクリプトを作成し、実行権限をつける
debian-sv# vi /etc/init.d/utvpnserver
debian-sv# chmod 755 /etc/init.d/utvpnserver
スクリプトの中身はこんな感じ。
UT-VPNのマニュアルに設定例があるので、それを元にして
自分の環境に合うよう編集する。
#!/bin/bash
# chkconfig: 2345 99 01
# description: PacketiX VPN Server 2.0
DAEMON=/usr/utvpnserver/utvpnserver
LOCK=/var/lock/utvpnserver
test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
chkconfigにて自動起動設定。
debian-sv# chkconfig --add utvpnserver

2012年2月13日月曜日

Apache2.2でSSL+WebDAV構築。(debian6.0)

出先からdebianサーバのファイルにアクセス出来るようにするために、
Apache2.2を設定し、WebDAVサーバを構築した。
Apacheはdebianインストール時に導入しておいたので、
設定のみの作業となった。

参考サイトはこちら→webサーバ(apache2)の設定(debian squeeze)(Ubuntu 10.10 11.04)

ほぼ参考サイト通りの手順だが、実際に行った作業のみ抜粋してみる。
各作業の解説については、参考サイトを参照されたし。

文字エンコーディングモジュールをインストールする。
debian-sv# apt-get install libapache2-mod-encoding
SSLサイトのテンプレートをコピーする。
設定名は、www-ssl とする。
debian-sv# cp /etc/apache2/sites-available/default-ssl /etc/apache2/sites-available/www-ssl
SSL自己署名証明書を現在のホスト名で更新する。
debian-sv# make-ssl-cert generate-default-snakeoil --force-overwrite        .
コピーしたSSLサイトの設定を有効化する。
debian-sv# a2ensite www-ssl
SSLモジュールを有効化する。
debian-sv# a2enmod ssl
dav_fsモジュールを有効化する。
debian-sv# a2enmod dav_fs
encodingモジュールを有効化する。
debian-sv# a2enmod encoding
ここで一旦Apacheを再起動し、正常にSSLサイトとして動作するか確認してみる。
こちらの設定では https://debian-sv/ というURLになる。
「It Works!」という画面が表示されればOK。SSLの警告が出る場合があるが、
自分で作ったサイトだし無視してもかまわないw
debian-sv# /etc/init.d/apache2 restart
さて、設定を続行する。

basic認証でパスワード認証するユーザを追加する。
パスワードの入力とリタイプを求められるので、入力してやる。
下記の「username」は任意のユーザ名。
debian-sv# htpasswd -c /etc/apache2/.passwd username
New password:
Re-type new password:
Adding password for user username
www-sslを編集する。
debian-sv# vi /etc/apache2/sites-available/www-ssl
以下の設定を<VirtualHost _default_:443> と</VirtualHost> の間に
追加する。場所はまあ、末尾ぐらいでいいと思う。
        # WebDAV Configration
        Alias /share /mnt/storage/share
        <Directory /mnt/storage/share>
                Options Indexes FollowSymLinks MultiViews
                DAV On
                AuthType Basic
                AuthName "debian-sv WebDAV SSL"
                AuthUserFile /etc/apache2/.passwd
                Require valid-user
        </Directory>
設定を反映させる。
debian-sv# /etc/init.d/apache2 reload
これで、WebDAVの設定は完了。
実際にブラウザで確認してみる。
今回の設定では https://debian-sv/share/ というURLとなる。
正常にファイルのリストが表示されれば作業完了。

2012年2月12日日曜日

ntpdateで時刻補正。(debian6.0)

ラジオサーバとして使うからには、正確な時刻を維持しておきたい。
ntpdを使うという手もあるけど、お手軽にntpdateで時刻補正してみる。

debian-sv# apt-get install ntpdate
動作確認。
debian-sv# ntpdate time.nist.gov
12 Feb 12:55:23 ntpdate[3776]: adjust time server 192.43.244.18 offset -0.032710 sec
おっけー。

定期的に実行させるために、crontab に登録しておく。
6時間ごとに補正をかけるようにしてみた。
debian-sv# crontab -e
0 0,6,12,18 * * * /usr/sbin/ntpdate time.nist.gov
作業終了!

radiko録音サーバ構築(debian6.0)

せっかく常時起動しているサーバがあるんだから、
ラジオサーバとしても使いたいよねってことでradiko録音サーバを
構築しました。電波状況に左右されないのが素敵。
まあ若干グレー感な気はしないでもないけど(´・ω・`)

ともかく作業をはじめる。
ビルドの前に、依存関係のあるパッケージ

  • zlib1g-dev
  • libgnutls-dev
  • libjpeg62-dev

を予めインストールしておく。
debian-sv# apt-get install zlib1g-dev libgnutls-dev libjpeg62-dev
・RTMPDumpのインストール
debian-sv# git clone git://git.ffmpeg.org/rtmpdump
debian-sv# cd rtmpdump
debian-sv# make
debian-sv# make install
起動確認。OKっぽい。
debian-sv# rtmpdump
RTMPDump v2.4
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
ERROR: You must specify a hostname (--host) or url (-r "rtmp://host[:port]/playpath") containing a hostname
・swftoolsのインストール
debian-sv# wget http://www.swftools.org/swftools-0.9.1.tar.gz
debian-sv# tar -xzvf swftools-0.9.1.tar.gz
debian-sv# cd swftools-0.9.1
debian-sv# ./configure
debian-sv# make
debian-sv# make install
swfextract で起動確認してみる。OK!
debian-sv# swfextract
Usage: swfextract [-v] [-n name] [-ijf ids] file.swf
 -v , --verbose    Be more verbose
 -o , --output filename   set output filename
 -V , --version    Print program version and exit

SWF Subelement extraction:
 -n , --name name   instance name of the object (SWF Define) to extract
 -i , --id ID    ID of the object, shape or movieclip to extract
 -f , --frame frames   frame numbers to extract
 -w , --hollow    hollow mode: don't remove empty frames
                  (use with -f)
 -P , --placeobject    Insert original placeobject into output file
                  (use with -i)
SWF Font/Text extraction:
 -F , --font ID    Extract font(s)
Picture extraction:
 -j , --jpeg ID    Extract JPEG picture(s)
 -p , --pngs ID    Extract PNG picture(s)

Sound extraction:
 -m , --mp3    Extract main mp3 stream
 -s , --sound ID    Extract Sound(s)
次は、スクリプトの作成にとりかかる。
スクリプトは、参考サイト→YAMA'S MEMORANDUM:RTMPDUMPによるradikoの録音
で公開されていたシェルスクリプトを元にして作成することにした。
で、出来上がったのがこれ。
#!/bin/bash

#date=`date '+%Y-%m-%d-%H:%M'`
date=`date '+%Y-%m-%d'`
cachedir=/var/cache/radiko/
mp3dir=/mnt/share/radio/
playerurl=http://radiko.jp/player/swf/player_3.0.0.01.swf
playerfile="./player.swf"
keyfile="./authkey.png"
tmpfile="./${1}_${date}"

if [ $# -ge 2 ]; then
  station=$1
  DURATION=`expr $2 \* 60`
  mp3file="${station}_${3}_${date}.mp3"
  if [ $# -eq 4 ]; then
    delaysec=$4
  else
    delaysec=0
  fi
else
  echo "usage : radiorec station_name duration(minuites) title [offset(sec)]"
  exit 1
fi

cd $cachedir

#
# get player
#
if [ ! -f $playerfile ]; then
  wget -q -O $playerfile $playerurl

  if [ $? -ne 0 ]; then
    echo "failed get player"
    exit 1
  fi
fi

#
# get keydata (need swftool)
#
if [ ! -f $keyfile ]; then
  swfextract -b 14 $playerfile -o $keyfile

  if [ ! -f $keyfile ]; then
    echo "failed get keydata"
    exit 1
  fi
fi

if [ -f auth1_fms ]; then
  rm -f auth1_fms
fi

#
# access auth1_fms
#
wget -q \
     --header="pragma: no-cache" \
     --header="X-Radiko-App: pc_1" \
     --header="X-Radiko-App-Version: 2.0.1" \
     --header="X-Radiko-User: test-stream" \
     --header="X-Radiko-Device: pc" \
     --post-data='\r\n' \
     --no-check-certificate \
     --save-headers \
     https://radiko.jp/v2/api/auth1_fms

if [ $? -ne 0 ]; then
  echo "failed auth1 process"
  exit 1
fi

#
# get partial key
#
authtoken=`perl -ne 'print $1 if(/x-radiko-authtoken: ([\w-]+)/i)' auth1_fms`
offset=`perl -ne 'print $1 if(/x-radiko-keyoffset: (\d+)/i)' auth1_fms`
length=`perl -ne 'print $1 if(/x-radiko-keylength: (\d+)/i)' auth1_fms`

partialkey=`dd if=$keyfile bs=1 skip=${offset} count=${length} 2> /dev/null | base64`
echo "authtoken: ${authtoken} \noffset: ${offset} length: ${length} \npartialkey: 

$partialkey"

rm -f auth1_fms

if [ -f auth2_fms ]; then
  rm -f auth2_fms
fi

#
# access auth2_fms
#
wget -q \
     --header="pragma: no-cache" \
     --header="X-Radiko-App: pc_1" \
     --header="X-Radiko-App-Version: 2.0.1" \
     --header="X-Radiko-User: test-stream" \
     --header="X-Radiko-Device: pc" \
     --header="X-Radiko-Authtoken: ${authtoken}" \
     --header="X-Radiko-Partialkey: ${partialkey}" \
     --post-data='\r\n' \
     --no-check-certificate \
     https://radiko.jp/v2/api/auth2_fms

if [ $? -ne 0 -o ! -f auth2_fms ]; then
  echo "failed auth2 process"
  exit 1
fi

echo "authentication success"
areaid=`perl -ne 'print $1 if(/^([^,]+),/i)' auth2_fms`
echo "areaid: $areaid"

rm -f auth2_fms

# offset time
echo "Sleep ${delaysec} sec."
sleep $delaysec

#
# rtmpdump
#
xml_channel=``

/usr/local/bin/rtmpdump -v \
         -r "rtmpe://w-radiko.smartstream.ne.jp" \
         --playpath "simul-stream.stream" \
         --app "${station}/_definst_" \
         -W $playerurl \
         -C S:"" -C S:"" -C S:"" -C S:$authtoken \
         --live \
         --stop $DURATION \
         -o $tmpfile

/usr/bin/avconv -y -i $tmpfile -acodec libmp3lame -ab 64k $mp3file
cp $mp3file $mp3dir

rm $tmpfile
rm $mp3file
ほとんどパクリですすいません(´・ω・`)
で、こいつを /usr/local/share/radiko に突っ込んで、
debian-sv# mkdir /usr/local/share/radiko
debian-sv# cp radiorec.sh /usr/local/share/radiko
さらに /user/local/bin にシンボリックリンクを作成。
debian-sv# ln -s /usr/local/share/radiko/radiorec.sh /usr/local/bin/radiorec
そんで作業フォルダを /var/cache/radiko で作成、
パーミッションを全ユーザから読み書きできるよう変更した。
debian-sv# mkdir /var/cache/radiko
debian-sv# chmod 777 /var/cache/radiko
あとはこのスクリプトをcrontabに登録してやれば、
ラジオを自動的に録音できるようになる。
crontabの設定例はこんな感じ。
# 月曜JUNK 深夜の馬鹿力
59 0 * * 2 /usr/local/bin/radiorec hbc 120 30
作業終了! あとは月曜の夜を楽しみに待つだけだ( ^ω^)

2012年2月11日土曜日

デフォルトエディタ変更(debian6.0)

debianのデフォルトのCUIエディタがnanoになっているので、
vimに変更しておく。
debian-sv# update-alternatives --config editor
alternative editor (/usr/bin/editor を提供) には 2 個の選択肢があります。

  選択肢    パス             優先度  状態
------------------------------------------------------------
* 0            /bin/nano           40        自動モード
  1            /bin/nano           40        手動モード
  2            /usr/bin/vim.tiny   10        手動モード

現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してくだ
さい: 2
update-alternatives: /usr/bin/editor (editor) を提供するために 手動モード で
/usr/bin/vim.tiny を使います。
以上w

ffmpegのビルド&インストール(debian6.0)

debian標準のリポジトリにあるffmpegはバージョンが古い上、
MP3のコーデックが含まれていないため、
最新バージョンを取得してビルド&インストールした。

必須パッケージのインストール
ビルドのために必要なパッケージをapt-get でインストールしておく。
今回apt-get でインストールしたのは、
gcc,make,g++,gitの4つ。
debian-sv# apt-get install gcc make g++ git
もひとつ、yasm というアセンブラもインストールするが、
リポジトリ内のやつはバージョンが古いため、最新バージョンを取得して
インストールを済ませておく。
debian-sv# wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
debian-sv# tar -xzvf yasm-1.2.0.tar.gz
debian-sv# cd yasm-1.2.0
debian-sv# ./configure
debian-sv# make
debian-sv# make install
今回ffmpegに組み込むコーデックは、

  • libmp3lame(LAME MP3 コーデック)
  • libfaac(AAC エンコーダ) ※faad(AAC デコーダ)も併せてインストールする。
  • libvorbis(Ogg Vorbis コーデック)
  • libx264(x264 コーデック)
  • libxvid(XVID コーデック)

の5つ。それぞれをダウンロードしてビルドしていく。

・LAME MP3
debian-sv# wget http://sourceforge.net/projects/lame/files/lame/3.99/lame-3.99.4.tar.gz
debian-sv# tar -xzvf lame-3.99.4.tar.gz
debian-sv# cd lame-3.99.4
debian-sv# ./configure
debian-sv# make
debian-sv# make install
・faac
※faac1.28をmake しようとすると、
こちらの環境ではエラーが発生してビルドが止まってしまう。
ここのサイト→Between Winds and Clouds:ライブラリのインストール (aac)
に回避方法が載っていたので、それを参考に作業を進める。

debian-sv# wget http://downloads.sourceforge.net/faac/faac-1.28.tar.gz
debian-sv# tar -xzvf faac-1.28.tar.gz
debian-sv# cd faac-1.28
debian-sv# vi common/mp4v2/mpeg4ip.h
以下の部分(123行目ぐらいのところ)をコメントアウトする。
#ifdef __cplusplus
extern "C" {
#endif
char *strcasestr(const char *haystack, const char *needle);
#ifdef __cplusplus
}
#endif
あとは通常の手順でビルドする。
debian-sv# ./configure
debian-sv# make
debian-sv# make install
・faad
debian-sv# wget http://downloads.sourceforge.net/faac/faad2-2.7.tar.gz
debian-sv# tar -xzvf faad2-2.7.tar.gz
debian-sv# cd faad2-2.7
debian-sv# ./configure
debian-sv# make
debian-sv# make install
・Ogg Vorbis
※ogg とvorbis がそれぞれ別ソースになっており、
vorbis をビルドする際にogg が必要になるので、
先にoggをビルド→vorbisをビルドという手順で作業を進める。

debian-sv# wget http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz
debian-sv# tar -xzvf libogg-1.3.0.tar.gz
debian-sv# cd libogg-1.3.0
debian-sv# ./configure
debian-sv# make
debian-sv# make install
-------------------------
debian-sv# wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.2.tar.gz
debian-sv# tar -xzvf libvorbis-1.3.2.tar.gz
debian-sv# cd libvorbis-1.3.2
debian-sv# ./configure
debian-sv# make
debian-sv# make install
・x264
※configure 時に--enable-shared を忘れないこと。
debian-sv# git clone git://git.videolan.org/x264.git
debian-sv# cd x264
debian-sv# ./configure --enable-shared
debian-sv# make
debian-sv# make install
・xvid
debian-sv# wget http://downloads.xvid.org/downloads/xvidcore-1.3.2.tar.gz
debian-sv# tar -xzvf xvidcore-1.3.2.tar.gz
debian-sv# cd xvidcore/build/generic
debian-sv# ./configure
debian-sv# make
debian-sv# make install
さて、ようやくこれでffmpegのビルドが出来るようになった。

・ffmpeg
※最後にldconfig を忘れずに実行すること。
debian-sv# git clone git://source.ffmpeg.org/ffmpeg.git
debian-sv# cd ffmpeg
debian-sv# ./configure --enable-gpl  --enable-shared --enable-nonfree --enable-libfaac --enable-libmp3lame --enable-libvorbis --enable-libx264 --enable-libxvid
debian-sv# make
debian-sv# make install
debian-sv# ldconfig
以上でビルド&インストール完了。
ffmpegを実行してみる。
ffmpeg version N-37767-ga78f6b8 Copyright (c) 2000-2012 the FFmpeg developers
  built on Feb 11 2012 12:23:19 with gcc 4.4.5
  configuration: --enable-gpl --enable-libfaac --enable-nonfree --enable-libmp3lame --enable-libvorbis --enable-libx264 --enable-libxvid --enable-shared
  libavutil      51. 39.100 / 51. 39.100
  libavcodec     54.  1.100 / 54.  1.100
  libavformat    54.  0.100 / 54.  0.100
  libavdevice    53.  4.100 / 53.  4.100
  libavfilter     2. 62.100 /  2. 62.100
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0.  6.100 /  0.  6.100
  libpostproc    52.  0.100 / 52.  0.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'
起動した!☆-(ノ゚Д゚)八(゚Д゚ )ノイエーイ

samba設定。(debian6.0)

Windowsとフォルダ共有するためには、sambaサーバを設定する必要がある。
sambaサーバ自体はdebianのインストール時に導入してるので設定から。

設定内容は、参考サイト→忘れるので:debian 6 ファイルサーバー構築 Samba
に準じる。

デフォルト設定をバックアップした上でviでsmb.conf を開く。
debian-sv# cp /etc/samba/smb.conf /etc/samba/smb.conf.save
debian-sv# vi /etc/samba/smb.conf
結構長いので、変更箇所だけ列挙する。
最初に、ワークグループと文字コードの設定から。
[global]

## Browsing/Identification ###
workgroup = WORKGROUP
unix charset = UTF8
dos charset = CP932
次は、アクセスできるIPアドレスの範囲を設定。
#### Networking ####
interfaces = 127.0.0.0/8 eth0 192.168.1.0/24
認証設定。誰でもアクセスできるようにしておく。
####### Authentication #######
security = share
以上でグローバル設定は終了。
末尾ぐらいに、新しく追加する共有設定を記述。
[share]
path = /mnt/storage/share
writable = yes
guest ok = yes
guest only = yes
create mode = 0777
directory mode = 0777
設定が終わったら、sambaサーバを再起動させておく。
debian-sv# /etc/init.d/samba restart
Windows側から正常に参照できることを確認し、作業終了。

2012年2月10日金曜日

IPアドレス固定化。(debian6.0)

今日外から自宅のサーバにsshで繋ごうとしたら、何度やっても繋がらない。
なんでだー?と思ったら、そういやIPアドレスを固定にしてなっかたやん!
とゆーことに気づいたw
そんなわけでIPアドレスの固定化を実施した。

/etc/network/interfaces を編集する。
debian-sv# vi /etc/network/interfaces
標準では、
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
という感じになってるので、これを次のように変更する。
# The loopback network interface
auto lo eth0
iface lo inet loopback

# The primary network interface
#allow-hotplug eth0
iface eth0 inet static
address 192.168.1.100
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1
次に、resolv.conf も編集しておく。
debian-sv# vi /etc/resolv.conf
interfaces にもDNSの記述はしておいたが、念の為編集しておく。
nameserver 192.168.1.1
あとは、debianサーバの名前解決ができるよう、hosts ファイルを編集しておく。
debian-sv# vi /etc/hosts
標準ではlocalhostアドレスにサーバ名が設定されてるので、 先ほど設定した固定アドレスの分も追記しておく。
127.0.0.1       localhost
127.0.1.1       debian-sv
192.168.1.100   debian-sv

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ここまで設定が終わったら、あとはネットワークの再起動を実施する。
debian-sv# /etc/init.d/networking restart
ちゃんと設定が反映されてるか確認してみる。
debian-sv# ifconfig eth0
eth0      Link encap:イーサネット  ハードウェアアドレス 00:30:1b:bd:fa:b7 
          inetアドレス:192.168.1.100 ブロードキャスト:192.168.1.255  マスク:255.255.255.0
          inet6アドレス: fe80::230:1bff:febd:fab7/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:19741 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:12986 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:1000 
          RXバイト:16838491 (16.0 MiB)  TXバイト:1780511 (1.6 MiB)
          割り込み:25 
OKっぽい。以上で作業終了。

2012年2月9日木曜日

ファイルシステムの自動マウント(debian6.0)

ファイル共有用に2TBのHDDを追加し、
起動時に自動的にマウントするように設定するには、
/etc/fstab を編集する必要がある。

パーティションを作成する。
debian-sv# fdisk /deb/sdb
とし、fdiskを起動する。
Command (m for help): n
コマンド入力を促されるので、n(新規作成)を入力。すると、
Command action
 e extended
 p primary partition (1-4)
と聞かれるので、とりあえずプライマリパーティション(p)とする。
パーティション番号は1,ディスク全域を使用することにする。
p
Partition number (1-4): 1
First cylinder (1-243201, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-243201, default 243201): 
Using default value 243201
パーティションの設定が終わったので、その内容をディスクに書き込む。
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
とまあこんな感じでパーティションを作ったら、一旦確認。
Command (m for help): p

Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0xac6423cb

   Device  Boot    Start      End      Blocks   Id  System
/dev/sdb1              1   243201  1953511008+  83  Linux

Command (m for help): q
ちゃんとでけた。
次はフォーマット。今回はext4でフォーマットしてみる。
debian-sv# mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=1 blocks, Stripe width=0 blocks
122101760 inodes, 488377752 blocks
24418887 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
14905 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
102400000, 214990848
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first.Use tune2fs -c or -i to override.
フォーマット終了!試しに手動でマウントしてみる。
debian-sv# mkdir /mnt/storage
debian-sv# mount /dev/sdb1 /mnt/storage
さて正常にマウントできているのかな?
debian-sv# mount
(略)
/dev/sdb1 on /mnt/storage type ext4 (rw)
大丈夫のようだ。次は起動時自動的にマウントされるようにfstabの編集をする。
debian-sv# vi /etc/fstab
fstabの内容↓
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type><options> <dump><pass>
proc /proc proc defaults 0 0
# / was on /dev/sda1 during installation
UUID=5f1999ce-2be2-498a-97a8-d95e2806f016 / ext3 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
UUID=636604c7-fb91-477a-b75b-f1d0afbef0ae none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
となっているところの末尾に
/dev/sdb1 /mnt/storage ext4 defaults 0 0
を追加してやる。
あとは再起動して正常にマウントされているか確認して作業終了。

※参考サイト:UNIX Life - fstabの設定

2012年2月7日火曜日

sudo有効化(debian6.0)

debian6ではsudoは標準でインストールされている。
しかし、使用するには自分のユーザの権限を追加する必要がある。
設定は、/etc/sudoers を書き換えることで行う。

debian-sv# vi /etc/sudoers

# User privilege specification
root ALL=(ALL) ALL

となってる箇所に、

# User privilege specification
root ALL=(ALL) ALL
[ユーザ名] ALL=(ALL) ALL

と追加してやる。