2009年9月26日土曜日

FreeBSD 8.0 RC1でのpxeboot

いままでの方法と基本的に変わってないんだけど、ひとつ変わったもよう。 loader promptとか、loader.confで設定するvfs.root.mountfromの値が、

  • "ufs:/dev/md0c" → "ufs:/dev/md0"
になってました。

参照先

2009年2月4日水曜日

本日の備忘録

こんなフォーマットのログがあって、どのポートへの接続が多いかを知りたかったので。
Feb  4 21:39:20 optg5 S03:MSQ: Discard packet. TCP(192.0.2.0:46780 -> 192.0.2.231:14571)
こんなのを書いた。
$ gawk '/\:[0-9]+\)$/ {port = gensub(/(^.*\:)([0-9]+)(\)$)/, "\\2", 1); if (port in ports) ports[port]++; else ports[port]=1;}
END{for (x in ports) printf "%5s:%s\n" , x, ports[x]}' /var/log/user.log | sort -r -n -t":" -k2 | head -20
30分…。いろいろと身についてないですな。

2008年11月22日土曜日

ESXi FreeBSD 6.3ゲストのNIC変更

ゲストOSにFreeBSD 6.3 i386をインストールしたところ、NICがlnc0になっていた。しかも、"kernel: lnc0: Missed packet — no receive buffer"なんてメッセージも出していた。そのうち、関係しているがわからないけど、portsでの作業中にフリーズした。 とりあえず、vmxファイルを修正して、em0にしてみることにした。

環境

  • VMware ESX Server 3i, 3.5.0, 110271
  • VM:FreeBSD 6.3-RELEASE i386

手順

  1. VMware Infrastructure Clientから、Summaryタブ ─ Resources ─ Datastoreにあるディスク領域名をダブルクリック
  2. Datastore Browserが開いたら、対象のゲストOSのディレクトリを開く
  3. vmxファイルを選択して、右クリックから、Downloadを選択。保存場所を確定させて、ファイルのダウンロードを開始する
  4. ダウンロードしたvmxファイルをテキストエディタで開き、"ethernet0.virtualDev = "e1000""を追加する。
  5. 修正したvmxファイルをDatastore BrowserのUpload File(メニューバーのボタン)を使い、ESXiホスト上にアップロードする。(旧ファイルはリネームなどを事前におこなっておく)
  6. ゲストOSの起動。ifconfigなどで、em0があることを確認する。
  7. /etc/rc.confなどの修正をして、/etc/netstartで動作確認する。

portsでのビルド作業など半日ほど使用したが、今のところ問題なし。

2008年10月20日月曜日

gawkでリネーム

ファイル名の途中の文字列だけを変更したかったので。
$ ls -1
ABBB20081019.csv
ACCC20081019.csv
ADDD20081019.csv
AEEE20081019.csv
AFFF20081019.csv
$ ls -1 *.csv | gawk '{ fn = gensub(/(^A[A-Z]*)(20081019)(\.csv)/,"\\120081020\\3","g"); printf("mv %s %s\n", $0, fn);}'
mv ABBB20081019.csv ABBB20081020.csv
mv ACCC20081019.csv ACCC20081020.csv
mv ADDD20081019.csv ADDD20081020.csv
mv AEEE20081019.csv AEEE20081020.csv
mv AFFF20081019.csv AFFF20081020.csv
$ ls -1 *.csv | gawk '{ fn = gensub(/(^A[A-Z]*)(20081019)(\.csv)/,"\\120081020\\3","g"); printf("mv %s %s\n", $0, fn) | "sh";}END{ close("sh")}'
$ ls -1
ABBB20081020.csv
ACCC20081020.csv
ADDD20081020.csv
AEEE20081020.csv
AFFF20081020.csv

2008年10月19日日曜日

WPA-PSK(TKIP)の設定

環境

  • FreeBSD 6.3
  • アクセスポイント:WLA2-G54C
  • 無線LANカード:WLI2-CB-G54L(ndisで使用)

設定内容

/etc/wpa_supplicant.confの作成
% cat /etc/wpa_supplicant.conf 
network={
 ssid="MYAP"
 bssid=xx:xx:xx:xx:xx:xx
 scan_ssid=1
 proto=WPA
 key_mgmt=WPA-PSK
 pairwise=TKIP
 group=TKIP
 psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
}
"psk"の値は、wpa_passphraseなんていうコマンドがあったので、試してみた。こんな感じで使う↓
% wpa_passphrase MYAP mypassphrase
network={
 ssid="MYAP"
 #psk="mypassphrase"
 psk=9eadec395caca2655b6c55171a9313240ad3fd5a8a273e606e0918ee0055b008
}
/etc/rc.confの変更
ifconfig_ndis0="WPA inet 192.168.1.221 netmask 255.255.255.0"
/etc/rc.d/wpa_supplicantの変更 起動時にアクセスポイントに接続できなくて、下記の変更をおこなった
*** 32,38 ****
  load_rc_config $name
  
  pid_file="/var/run/${name}/${ifn}.pid"
! command_args="-B -q -i $ifn -c $conf_file -P $pid_file"
  required_files=$conf_file
  
  run_rc_command "$1"
何故、wpa_supplicantスクリプトの"-D"があると接続できないのかは不明。

参照先

2008年9月24日水曜日

inode不足

VMWare環境でディスク不足が発生。一時用とはいえ3Gでは足りなかったもよう。 ディスクを追加し、Ports用("/usr/ports")としてマウントした。"portsnap extract"としたところ、inode不足に。

"www/p5-WWW-*"を展開中に↓こんな感じに
Filesystem  1K-blocks    Used   Avail Capacity iused  ifree %iused  Mounted on
/dev/ad0s1a    304302  247550   32408    88%    2726  36696    7%   /
devfs               1       1       0   100%       0      0  100%   /dev
/dev/ad0s1e    202094   34632  151296    19%     251  26115    1%   /tmp
/dev/ad0s1f   3127410 1659936 1217282    58%   71609 352325   17%   /usr
/dev/ad0s1d    304302   89916  190042    32%   20500  18922   52%   /var
/dev/ad1s1f    233486       4  214804     0%       2  30204    0%   /iscsi
/dev/ad1s1d    738318  360492  318762    53%  115714   2044   98%   /usr/ports
/dev/ad1s1e    545326       4  501696     0%       2  70652    0%   /usr/src

"sysinstall"から、"Fdisk","Label"を使って作成したものではだめだったようなので、newfsでinode増やしてファイルシステムを再作成した。

# newfs -i 1024 /dev/ad1s1d

2008年8月30日土曜日

gawkでファイル削除

最近知った技を使う機会が。

$ ls -latr
合計 63636
drwxr-xr-x  2 kaz kaz    32768  3月  1 06:30 cddb_0301_data
drwxr-xr-x  2 kaz kaz    36864  4月  1 05:00 cddb_0401_data
drwxr-xr-x  2 kaz kaz    90112  5月  1 06:30 newage
drwxr-xr-x  2 kaz kaz   106496  5月  1 08:00 soundtrack
drwxr-xr-x  2 kaz kaz    36864  5月  1 08:30 reggae
drwxr-xr-x  2 kaz kaz   131072  5月  1 08:30 blues
drwxr-xr-x  2 kaz kaz   159744  5月  1 09:00 folk
drwxr-xr-x  2 kaz kaz    36864  5月  1 09:00 data
drwxr-xr-x  2 kaz kaz   135168  5月  1 09:00 jazz
drwxr-xr-x  2 kaz kaz   536576  5月  1 09:00 rock
drwxr-xr-x  2 kaz kaz   589824  5月  1 09:00 misc
drwxr-xr-x  2 kaz kaz    69632  5月  1 09:00 country
drwxr-xr-x  2 kaz kaz   225280  5月  1 09:00 classical
drwxrwxr-x  3 kaz kaz     4096  8月 16 17:46 include
drwxrwxr-x  3 kaz kaz     4096  8月 16 17:46 lib
drwxrwxr-x  4 kaz kaz     4096  8月 16 17:47 man
-rw-rw-r--  1 kaz kaz      272  8月 21 00:26 pet.txt
-rw-rw-r--  1 kaz kaz     4894  8月 21 01:20 my-medium.cnf
-rw-r--r--  1 kaz kaz  8255596  8月 28 00:33 freedb-update-20080401-20080501.tar.bz2
-rw-r--r--  1 kaz kaz  8724678  8月 28 00:33 freedb-update-20080301-20080401.tar.bz2
-rw-r--r--  1 kaz kaz  8359595  8月 28 00:33 freedb-update-20080201-20080301.tar.bz2
-rw-rw-r--  1 kaz kaz      152  8月 29 00:42 freedb.awk
-rw-r--r--  1 kaz kaz 37447502  8月 29 00:43 freedb.txt
drwx------ 10 kaz kaz     4096  8月 29 01:39 ..
drwx------  5 kaz kaz     4096  8月 29 07:02 var
drwxr-xr-x  2 kaz kaz     4096  8月 29 07:02 socket
drwxr-xr-x  2 kaz kaz     4096  8月 30 00:34 info
drwxrwxr-x  3 kaz kaz     4096  8月 30 00:34 share
drwxrwxr-x  2 kaz kaz     4096  8月 30 00:34 bin
drwxrwxr-x  2 kaz kaz     4096  8月 30 00:34 libexec
drwxrwxr-x 24 kaz kaz     4096  8月 30 00:34 .

いろいろ合わせて、削除対象を絞りこみ。最後の部分はgawkを使う。

$ find . -maxdepth 1 -type d -mtime +30 | egrep -v '_[0-9]{4}_' | gawk '{ print $0 }'
./country
./misc
./blues
./classical
./rock
./data
./soundtrack
./jazz
./reggae
./newage
./folk

gawkの記述を下のように変更して、実行

gawk '{ printf("rm -rf %s\n", $0) | "sh" }END { close("sh")}

$ find . -maxdepth 1 -type d -mtime +30 | egrep -v '_[0-9]{4}_' | gawk '{ printf("rm -rf %s\n", $0) | "sh" }END { close("sh")}'
無事に削除ができた
合計 61532
drwxr-xr-x  2 kaz kaz    32768  3月  1 06:30 cddb_0301_data
drwxr-xr-x  2 kaz kaz    36864  4月  1 05:00 cddb_0401_data
drwxrwxr-x  3 kaz kaz     4096  8月 16 17:46 include
drwxrwxr-x  3 kaz kaz     4096  8月 16 17:46 lib
drwxrwxr-x  4 kaz kaz     4096  8月 16 17:47 man
-rw-rw-r--  1 kaz kaz      272  8月 21 00:26 pet.txt
-rw-rw-r--  1 kaz kaz     4894  8月 21 01:20 my-medium.cnf
-rw-r--r--  1 kaz kaz  8255596  8月 28 00:33 freedb-update-20080401-20080501.tar.bz2
-rw-r--r--  1 kaz kaz  8724678  8月 28 00:33 freedb-update-20080301-20080401.tar.bz2
-rw-r--r--  1 kaz kaz  8359595  8月 28 00:33 freedb-update-20080201-20080301.tar.bz2
-rw-rw-r--  1 kaz kaz      152  8月 29 00:42 freedb.awk
-rw-r--r--  1 kaz kaz 37447502  8月 29 00:43 freedb.txt
drwx------ 10 kaz kaz     4096  8月 29 01:39 ..
drwx------  5 kaz kaz     4096  8月 29 07:02 var
drwxr-xr-x  2 kaz kaz     4096  8月 29 07:02 socket
drwxr-xr-x  2 kaz kaz     4096  8月 30 00:34 info
drwxrwxr-x  3 kaz kaz     4096  8月 30 00:34 share
drwxrwxr-x  2 kaz kaz     4096  8月 30 00:34 bin
drwxrwxr-x  2 kaz kaz     4096  8月 30 00:34 libexec
drwxrwxr-x 13 kaz kaz     4096  8月 30 01:03 .

参照:GNU Awk ユーザーズガイド: General Introduction(4.6 print や printfの出力のリダイレクト)