2015年10月27日火曜日

Fedora で WN-G150UM

WN-G150UM のドライバはカーネルに標準で入っていて rtl8192cu.ko らしいが、
udev が反応してくれず ip コマンドで見えない。

アイ・オーデータのベンダーID とデバイス ID がコードに含まれてないらしい。

これは動的に /sys/bus/usb/drivers/rtl8192cu/new_id に追加出来るらしく、
modprobe 実行時に強制的にコマンドで追加してしまう方法が一般的のよう。
以下、http://beautifulajax.dip.jp/?p=1016 のマルパクです。

# echo 'install rtl8192cu /sbin/modprobe --ignore-install rtl8192cu ' \
# '$CMDLINE_OPTS; /bin/echo "04bb 094c"' \
# ' > /sys/bus/usb/drivers/rtl8192cu/new_id' \
# > /var/tmp/hogehoge.txt
# echo '# USB device 0x:0x (rtl8192cu)
# SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="04bb", ' \
# 'ATTR{idProduct}=="094c", RUN+="/sbin/modprobe -qba rtl8192cu"' \
# > /etc/udev/rules.d/70-persistent-net.rules
上記のように /etc/modprobe.d/wireless.conf と /etc/udev/rules.d/70-persistent-net.rules
を追加。

再起動したくないときは以下実行。(wlp0s26u1u2 は私の環境のデバイス名)


# modprobe -ba rtl8192cu
# ip link set wlp0s26u1u2 up


2015年10月22日木曜日

長いワンライン作って cron に登録したら(ファイルに分けたくなかった)、実行時に以下エラーで弾かれる。
CROND[8535]: (root) CMDOUT (/bin/sh: -c: line 0: unexpected EOF while looking for 
CROND[8535]: (root) CMDOUT (/bin/sh: -c: line 1: syntax error: unexpected end of file)

ターミナルから実行すると普通に OK なんだけど、なんで、、、といろいろ調べたら、コマンド内に % 文字が含まれる場合はバックスラッシュでエスケープしなくちゃいけないらしい。で、直った。

2015年10月7日水曜日

paramiko で exec_command で stdin, stdout 同時に利用すると帰ってこない

python paramiko で exec_command() でコマンド実行する際に、標準入力と
標準出力を同時に使いたいんだけど、標準出力がどうも取れなくて固まって
しまう。下記のように stdin.channel.shutdown_write()  する必要があるぽい。

import paramiko
client = paramiko.SSHClient()
client.connect(hostname='host', ....)
stdin, stdout, stderr = client.exec_command(command)
stdin.write(mydata)
stdin.flush()
stdin.channel.shutdown_write()  # <--- これが必要
stdin.close()
ret = stdout.read()
これなら大丈夫なんだけど、これで良いのか?

xxd 知らんかった

16進からバイナリに戻したい。
python の binascii.unhexlify() でやったりしてたけど、xxd なんてあるのね。
Fedora の場合は vim-common パッケージに入ってた。

xxd -r -p
知らんかった恥ずかしい+忘れそうなのでメモ。