Linuxサーバ」カテゴリーアーカイブ

radiko.jp録音環境構築(実験)

GuruPlugServerでradiko.jp録音環境構築(実験)参照リンク(下)を参考に、rtmpdumpとswftoolsを組み合わせた方法で、radiko.jp録音環境の構築がうまくいきました。

そこには、swftoolsのswfextractか何かで認証情報を引っ張ってきて、色々とゴニョゴニョやるように書いてありました。参照リンク先(深謝!)とちょっとの想像力で、何とか録音できるようになりました(実験済み)。linux系ならば、cronと組みあせれば予約録音も可能になるようです(これも実験済み)。swftoolsの導入時、コンパイル作業が必要になったが、参照リンクのおかげで、特に問題なくできました。

コンパイル時にちょっと注意する必要が

ただ、jpegのライブラリを別途用意する必要があります。これも参照リンクを参考にひっぱってきましたが、版数に6だとか8だとかがあり、結局6で動かしてみました。参照リンクには8版での導入例がありましたが、6でも動くようです。
#もしかするとswfextractだけ使う分には影響ないのかも知れませんね

ただコンパイル途中でエラーが1つ出ます。それをなんとかするため、lib/jpeg.cの462行目付近の関数を

[lib/jpeg.c]
462 int jpeg_load_from_mem(unsigned char*_data, int size, unsigned
char**dest, int*width, int*height)
463 {
464     fprintf(stderr, "jpeg_load_from_mem: No JPEG support compiled in\n");
465     return 0;
466 }

のように変更する必要があります。引数の型を正しく設定するだけですが。

シェルスクリプトの作成

今回、参照リンクにあったrec_radiko.shというシェルスクリプトを使わせてもらいました。ただし出力ファイルの名前の付け方をradikoolと合うように変更しました。

[~/bin/rec_radiko.sh]
#OUTFILENAME=${OUTFILEBASEPATH}/${OUTFILEPREFIX}_`date +%Y-%m-%dJST%H:%M:%S`
OUTFILENAME=${OUTFILEBASEPATH}/${OUTFILEPREFIX}_`date +%Y%m%d%H%M`

また、そのまま実行するとなぜかよく失敗します(20回に19回は失敗)。

メッセージは

failed auth1 process
failed auth2 process

など。どちらも認証処理時の失敗なんでしょうね?

でも、Verboseモードにするか(-qオプションを削除)、retryまでの待ち時間を長めにとれば、ほぼ100%うまくいくことが分かりました。
#何かのタイミングが関係しているのですかね?

[~/bin/rec_radiko.sh]
#
# 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 \
#     --tries=5 \
#     --timeout=5 \
#     -O auth1_fms_${OUTFILEPREFIX}_${CHANNEL} \
#     https://radiko.jp/v2/api/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 \
--tries=5 \
--timeout=10 \
-O auth1_fms_${OUTFILEPREFIX}_${CHANNEL} \
https://radiko.jp/v2/api/auth1_fms

ここでは-timeoutを変更していますが、-qを取ってしまっても、いろいろ
文字列がでましたが、失敗せず録音(実際はその前の認証処理)できているようです。

環境その他

Linux種類:Debian Lenny
(Linux guruplug 2.6.32-00007-g56678ec #1 PREEMPT Mon Feb 8 03:49:55
PST 2010 armv5tel GNU/Linux)
装置名:GuruPlugServer

アーカイブファイル名

rtmpdump-2.3.tgz
swftools-0.9.1 ( swftools-0.9.1.tar.gz )
#0.9.0はNG
freetype-2.4.4 ( freetype-2.4.4.tar.gz )
jpeg-6b ( libjpeg6b_6b.orig.tar.gz )
jpeg-8c ( jpegsrc.v8c.tar.gz )

お世話になったリンク

個人的自由帳 ≫ とあるサイトの録音手段 (シェルスクリプト)
http://blog.half-moon.org/archives/963

SWFTools導入 電話会議システムを導入 @OpenMeetings – 禿散らかしてごめんなさいhttp://d.hatena.ne.jp/machua/20101106/1289031103

CentOS安装Swftools FRONT-END STUDIO
http://www.wwswf.com/?p=1444

以上です。

Android端末は簡単sshサーバになる(2)

Android端末は簡単sshサーバになる(2)

前に、

「自宅のWindows共有サービスに出先から簡単アクセス」

という記事を書いたが、

「Android端末は簡単sshサーバになる」

と組み合わせられることがわかった。
#考えてみればできて当たり前ですね

Android端末でSambaOverSSH

VPNの使えない環境(会社LANなど)では、これは非常に
強力で、大変便利に使える。

・Windows共有サービスやSambaに出先から簡単アクセスできる。
たとえば、自宅PCの動画や音声もファイルを再生することができる。
もちろんExcelやWord、PPTファイルも普通に編集できる

・Port転送の設定でVNCで自宅PCにフルアクセスできる。
加えて、コールバックできれば、自宅から(会社LAN内の)
会社PCにトンネル接続できて比較的セキュアな在宅勤務環境が
構築できる

・IEを使う場合はDynamicForwardの設定でSocksを使うことができる。
たとえば、接続先のWEBアドレス(URL)によってsshサーバ経由で
WEBページが参照できる。参照に制限のある環境では大変有効。
「2ちゃんねる」でもなんでも自宅PCから参照できるものは何でも
参照できる

ただし、くれぐれもウイルスを持ち込まないように...

結構うるさいので別室に!?無線ファイルサーバ(samba)の構築

RAID対応ファイルサーバ(NAS-T4)とプラグPC(GuruPlugPlus)を組み合わせて無線ファイルサーバ(samba)を構築してみました。

ファイルサーバが寝室にあると大変なんです!

自室(兼寝室兼書斎兼BB無線ルータ設置室)にファイルサーバを置くことはできますが、常時立ち上げておくと非常にうるさいです。

ですので、プラグPCとファイルサーバを離れたところ(実は玄関にあるデッドスペース)に設置して、無線ファイルサーバにしてみます。

ファイルサーバ・プラグPCの環境

Linuxマシン

  • Linux guru 2.6.33.2-00003-g4b82fc0 #1 PREEMPT Thu Apr 22 03:29:35 PDT 2010 armv5tel GNU/Linux
  • Debian Lenny

WINDOWS

  • XP Home Edition SP3

ネットワーク構成(例)

subnet(192.168.1.0/24)

  • BBルータ(192.168.1.1):インタネットに接続
  • XP(192.168.1.20):sambaでファイルを読み書きさせたいWINDOWSマシン
  • GURU(192.168.1.17):ルータ(GuruPlugPlus)のwlan0側、
  • PLUG(192.168.1.18):sshサーバ(SheevaPlug)、sambaのドメインマスタかつ
  • 本subnetのローカルマスタはPLUG

subnet(192.168.0.0/24)

  • NAS-T4(192.168.0.36):ファイルサーバ(samba)
  • GURU(192.168.0.1):ルータ(GuruPlugPlus)のeth0側。NAS-T4と直接つなぐ場合はクロスケーブルを用いる

※sambaの本subnetのローカルマスタはファイルサーバ(NAS-T4)になります。

サーバ構築の手順

1.GuruPlugPlusを無線LANモードにする(wlan0)

※なにか設定がおかしいかったのか、立ち上げて30分もしないうちにアクセス不能(ファイルサーバのsubnet外部から内部へのpingが通らない)の現象があり困ったが、いじっているうちに消えた

2.GuruPlugPlusを有線LAN(eth0)とNAS-T4を接続する

※ 直接つなぐ場合はクロスケーブルを用いる必要があります

3.wlan0とeth0は別サブネット(subnet)として接続し、かつIPパケットを通したいのでip_forwadをONしておく。

[/etc/sysctl.conf](on GURU)
-----------------------------------------------------------------------
# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
net.ipv4.ip_forward=1
-----------------------------------------------------------------------

※ ブリッジ接続はちょっとやって諦めました。

4.sambaを設定する。普段あまり使わない設定をする必要がある

ドメインマスター(全体で1ホスト)、ローカルマスター(各subnet毎に1ホスト)、その他ホスト

[/etc/samba/smb.conf](on PLUG) ドメインマスター(全体で1ホスト)
-----------------------------------------------------------------------
[global]

DOS charset = CP932
unix charset = UTF-8
display charset = UTF-8

workgroup = WORKGROUP

server string = %h server

netbios name = GURU
domain master = yes : ドメインマスターになるよの設定
preferred master = yes
local master = yes : ローカルマスターに(も)なるよの設定
wins support = yes
wins proxy = yes
os level = 65
-----------------------------------------------------------------------
[/etc/samba/smb.conf](on NAS-T4) ローカルマスター(各subnet毎に1ホスト)
-----------------------------------------------------------------------
[global]

DOS charset = CP932
unix charset = UTF-8
display charset = UTF-8

workgroup = WORKGROUP

server string = %h server

netbios name = NAS-T4
domain master = No : ドメインマスターになりませんの設定
preferred master = No
local master = Yes : ローカルマスターになるよの設定
wins support = No
wins proxy = No
wins server = 192.168.1.18 : ドメインマスターのIPアドレス
os level = 65
-----------------------------------------------------------------------
[/etc/samba/smb.conf] その他ホスト
-----------------------------------------------------------------------
[global]
DOS charset = CP932
unix charset = UTF-8
display charset = UTF-8

workgroup = WORKGROUP

server string = %h server

netbios name = OTHERHOSTS
domain master = no : ドメインマスターになりませんの設定
preferred master = no
local master = no : ローカルマスターになりませんの設定
wins support = no
wins proxy = no
wins server = 192.168.1.18
os level = 0
-----------------------------------------------------------------------

※Windowsマシンではなにも設定する必要はありません(XPで確認)

5.sambaでファイルを読み書きさせたいWINDOWSマシンのデフォルトゲートウエイを変更するか、routeコマンドでsubnet(192.168.0.0/24)へのゲートウエイを追加する。これをやらないとファイルサーバが見えない

「ネットワーク接続」-「ローカルエリア接続」-「プロパティ」(全般)
-「インタネットプロトクロ(TCP/IP)」を選択して「プロバティ」(全般)
-「デフォルトゲートウエイ」を変更する

※ DHCP設定している場合は、routeコマンドで(デフォルトでない)ゲートウエイを追加する。

route -p add 192.168.0.0 MASK 255.255.255.0 192.168.1.17 IF 0x1

※ sambaの設定によっては、WINDOWS上のマイネットワークから辿っても出てこない場合がある。エクスプローラで直接指定すればよい。上記の場合だと
\\192.168.0.36
になる

お世話になったリンク

route – ルーティングテーブルの表示/設定を行う
[Chapter 5] ブラウジングと高度な共有の設定
サブネットをまたいで Samba ファイル-プリントサーバーを共有 パート2 – japan.internet.com
Setting GuruPlug to be a stable WiFi Client – PlugWiki
お試しネットワーク環境を作る – いますぐ実践! Linuxシステム管理 – Vol.065
Linuxでワイヤレス・アクセスポイントを構築する

以上です。

GuruPlugPlusのwlan0モード設定をifupdownに集約してみた

プラグPCのひとつ、GuruPlugPlusのwlan0モード設定元の設定は、rc.localから/root/init_setup.shを呼んで一旦apモードにして、同じくrc.localの次の行に/root/wlan.shを呼んでwlanモードにするようになっている。
設定がいろいろなところに飛んでいるのは分かりにくいと感じたので、今回、/etc/network/interfacesに集中させてみました。

(環境、ネットワーク構成)

カーネルの版数等は

  • Linux guru 2.6.33.2-00003-g4b82fc0 #1 PREEMPT Thu Apr 22 03:29:35 PDT 2010 armv5tel GNU/Linux
  • Debian Lenny

GuruPlugPlus周りのネットワーク構成は、

  • BBルータのIPアドレス:192.168.1.1
  • GuruPlugPlusのeth0経由でつながるsubnet:192.168.0.0/24
  • GuruPlugPlusのeth1経由につながるsubnet:192.168.10.0/24
  • GuruPlugPlusのwlan経由につながるsubnet:192.168.1.0/24。BBルータを介してWANへ

のようになっています

(手順等)

[/etc/network/interfaces]

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
pre-up /usr/sbin/ethtool -s eth0 autoneg on speed 1000 duplex full
# pre-up /usr/sbin/ethtool -s eth0 autoneg on speed 100 duplex full
address 192.168.0.1
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
dns-nameservers 192.168.1.1
auto eth1
iface eth1 inet static
# pre-up /usr/sbin/ethtool -s eth0 autoneg on speed 1000 duplex full
pre-up /usr/sbin/ethtool -s eth0 autoneg on speed 100 duplex full
address 192.168.10.1
network 192.168.10.0
netmask 255.255.255.0
broadcast 192.168.10.255
dns-nameservers 192.168.1.1
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
pre-up /root/wlan.sh
pre-up /sbin/iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
address 192.168.1.17
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
wpa-driver wext
wpa-ssid your_ssid
wpa-psk xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
dns-nameservers 192.168.1.1

[注意] MASQUERADE設定は不要かも知れない(BBルータの方でやっているから?)
と思っていろいろやってみました。これがないとインタネットにpingが通らなくなります
[注意] wpaに関する設定はこれだけ。wpa_supplicantも陽には起動していないようです。
ifupdownが「wpa」のキーワードを認識してwpa_supplicantを適当な引数で
起動してくれるようですね

[/root/wlan.sh]

#!/bin/sh
# The firmware files are -> sd8688.bin & sd8688_helper.bin
# The firmware files need to be present in /lib/firmware/
rmmod libertas_sdio libertas
cp /root/firmware/sd8688* /lib/firmware/
#/etc/init.d/udhcpd stop
#/etc/init.d/dnsmasq stop
echo 2 > /proc/uap/uap0/hwstatus
ifconfig uap0 down
rmmod uap8xxx
modprobe libertas_sdio
# This will be deleted on bootup.
# Bootup by-default is always AP mode.
touch /etc/wlanclient.mode
# Delete the firmware immediately so that next bootup is in AP mode.
rm -f /lib/firmware/sd8688*
# The newly created interface will be wlan(n)
# The following command lists all the available wireless networks
# iwlist scanning
# To connect to a particular SSID
# iwconfig
#Set leds for client mode
echo 0 > `eval ls /sys/class/leds/guruplug\:green\:wmode/brightness`
echo 1 > `eval ls /sys/class/leds/guruplug\:red\:wmode/brightness`

なんか不要な設定がいっぱいありそう。

[/etc/sysctl.conf]

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
net.ipv4.ip_forward=1

init_setup.shはLEDの設定だけになっています。

これで普通(WPA2で暗号化して)に無線LANモードが動くようになりました。

関連記事

GuruPlugPlusのwlan0モード設定をifupdownに集約してみた
SheevaPlug, GuruPlugPlusの電源回路を取り寄せてみた
GuruPlugの熱暴走対策と無線アクセスポイントの暗号化

お世話になったリンク

WPAで無線LAN on Debian sid-unstable – Let’s start something new!
お試しネットワーク環境を作る – いますぐ実践! Linuxシステム管理 – Vol.065
HP2133日記 wpa_supplicantの設定
iptables tutorial 1.2.2 – ステート機構

以上です

SheevaPlug, GuruPlugPlusの電源回路を取り寄せてみた

電解コンデンサの液漏れでSheevaPlugの電源が壊れてそのままにしていたのが、最近の情報では電源が単体で売られているらしい、ということが分かり、SheevaPlug用電源回路とGuruPlug+用電源回路を購入してみました。

SheevaPlug用電源回路は半田付けもなにも必要なく手でセットできます。

GuruPlug用電源回路は半田付けの必要がありました。コイルが若干大きくなっているように感じましたし、部品のレイアウトも結構異なっているようで、ショートを防ぐためのプラスチック製?のカバーを(そのままでは入らなかったので)少しだけ切って、なんとか押し込めました。あれを何も調整しなくても普通に入るんでしょうかね。

というわけで、SheevaPlugが無事復活して、sshサーバとして動いています。

GuruPlug+はwlanとeth0(1GBps)を同時に動かすと(熱暴走のためか)際限なくリセットしてしまう現象がありましたが、強化された電源回路でそのあたりどうなるか、実験してみました。

1: wlan0 + eth0(1G) : OK
2: wlan0 + eth0(1G) + eth1(1G) : NG
3: wlan0 + eth0(0.1G) + eth1(0.1G) : OK
4: wlan0 + eth0(1G) + eth1(0.1G) : OK

という結果。2のときは、eth1にイーサケーブルを入れた瞬間に落ちました。

[追記:20130702]

サーバとして無人(自宅にひとが居ない)の間も稼動させているのですが、電源周りが壊れてしまうと、最悪の場合火災になる可能性がありますので、海外品を使う場合には特に注意が必要ですね。これが国内メーカならリコールになっているのかも知れませんね。ずいぶん古い話をしていて申し訳ありませんが。。。

関連記事

GuruPlugPlusのwlan0モード設定をifupdownに集約してみた
SheevaPlug, GuruPlugPlusの電源回路を取り寄せてみた
GuruPlugの熱暴走対策と無線アクセスポイントの暗号化

以上