Linux

inotify-toolsでファイルの更新を監視

Linuxでファイル更新の監視というと、inotifyという機能を使います。 実際はPHPやPerlのラッパーライブラリを使うことが多くて、コレがけっこうめんどくさかったのですが、 inotify-toolsというCLIツールがあることに最近気が付きました。 『特定ディレクト…

NFSの稼働状況確認

稼働中NFSの状態確認コマンドをメモ書き クライアント側 マウント状況、オプションの確認 [root@nfs-client01 ~]# df -h ... 192.168.1.154:/tmp/ 65G 47G 15G 77% /mnt [root@nfs-client01 ~]# mount ... 192,168.1.154:/tmp/ on /mnt type nfs (rw,addr=19…

mrepoでCentOSミラー&自作なyumレポジトリ作るよ

自宅環境に CentOSのミラー 自作 なyumレポジトリ作りたいけど、手動もめんどうだし、cobblerもちょっと大げさだし・・・ というわけでmrepoというツールを使ってみました。 http://dag.wieers.com/home-made/mrepo/ 20行ほどのコンフィグを書いてmrepo -ugv…

CentOS5.5でext4を使う

CentOS5.5からext4が正式対応になってます(今さら><)。 まだちゃんと使ってないのですが、とりあえず導入手順だけまとめ。 インストール済みマシンに導入 e4fsprogsをインストールすると使えるようになります。 [root@test04 ~]# yum install e4fsprogs …

PXEブート&KickstartによるOSインストール自動化

OSインストール、手動でやるのめんどくさい!!!こんな画面もうみたくない!!! というわけでPXEブート&Kickstartで自動化しています。 (ユーザ作成などの初期設定もスクリプト化してそれに組み込んでます) 構築手順はいろんなとこにアップされてるので…

zabbix_get使ってzabtop作ってみた

Zabbixには動作確認用にzabbix_getってコマンドがついてて、これを使うとCLIで監視してる値が取れちゃいます。 $ zabbix_get -stest-web01 -k"system.cpu.load[,avg5]" 1.460000けっこうサクサク動くので試しに複数サーバの状態をリアルタイム表示するコマン…

syslog-ng使ってみた

RHEL6でrsyslogが標準になるそうですね。syslog-ng派の自分としてはさみしい限りです。 というわけでひさしぶりにsyslog-ng使ってみました。 通常のsyslogサーバ機能に加えて以下のリモートログ受信機能を追加してます。 ・リモートからのログを/var/log/rem…

リモートsyslog送信スクリプト

syslogサーバのリモート受信テストをやりたいときに使っている、syslog送信スクリプトです。 もちろん、送信側でsyslogdの設定変えてloggerコマンドでもいいです。 使いかた $ ./send_syslog.pl syslog_server "test message" ソースコード #!/usr/bin/perl …

bondingの設定がめんどうなのでスクリプト化した

Linuxのbonding設定がめんどうなのでスクリプト化しました。 エラー処理のない乱暴なスクリプトなので、初期インストール時以外で使わないようにー。 PXEブートインストールに組み込んでしまえると楽かなぁ。 使い方 [root@cent ~]# ./set_bonding.sh Usage:…

CentOS5.4のbondingインタフェースのIPV6無効化

CentOSを5.2から5.4にアップしたらbondingインターフェースでのIPV6を無効化が効かなくなっていた! [root@cent54 ~]# ifconfig bond0 bond0 Link encap:Ethernet HWaddr 00:0C:29:2B:3F:BC inet addr:192.168.244.132 Bcast:192.168.244.255 Mask:255.255.2…

ログの追記ぶんだけを取り出す

一定時間ごとにログを集計、監視をするときに前回からの差分だけ取り出すツールが欲しかったので作りました。 使い方 実行するごとに、指定したファイルの前回実行からの追記分を出力します $ ./logtail.pl /tmp/test.log 1 2 3 $ ./logtail.pl /tmp/test.lo…

eRubyとYAMLで簡単テンプレートシステム

『サーバごとにちょっと変えるだけ』、『似たような記述の繰り返し』、というようなコンフィグを作る時はできるだけテンプレート化するようにしてます。 ツールとしては使ってるのはeRubyとYAML、どちらもRubyいれればパーサがついてくるはず。 差分のある部…

yumでRPMforge(DAG)レポジトリを使う

CentOSのBaseレポジトリだけじゃ物足りないよ!!という場合は外部レポジトリ使ってみよう。 というわけで比較的安心して使えるRPMforgeの導入方法。 インストールのしかたはここに書いてある。 http://dag.wieers.com/rpm/FAQ.php#B2 自分の環境にあったコ…

snmpdでスクリプト実行結果を返す

「snmpでスクリプトなど使って好きな値を返したい」というとき、 snmpdの設定としてはexecやshがありますが、 自分はシンプルなpassをよく使っています。 (extendというのもあるようです。Net-SNMPで外部コマンドの結果を返すときに、そのMIBを固定したいの…

dmidecodeでハードウェア情報取得

@hirose31さんがつぶやいてたのですが、 dmidecodeってコマンドを使うとサーバのハードウェア情報がかなり詳細にとれます。 シリアル番号もわかります。 HPサーバで実行してみた # dmidecode ... BIOS Information Vendor: HP Version: P58 Release Date: 11…

ssh-copy-idで簡単にSSHの鍵を通す

パスワードなしでSSHログインしたいよ!って時に 公開鍵をコピーして、authorized_keysに追記して、パーミション変えてハァハァ、 ってやってませんか? ssh-copy-idコマンドで1発です! [mikeda@cent ~]$ ssh-keygen -t rsa [mikeda@cent ~]$ ssh-copy-id -i .s…

sshdの待ち受けポートを増やす

実家に里帰り中です。 こういう長期外出の時は外出先から自宅マシンにリモートアクセスできるようにちょっと細工をします。 踏み台となるマシンでsshdの待ち受けポートを増やす ブロードバンドルータで増やしたポートに対してポートフォワーディング設定 22…

rsyncでバックアップ

Linux、Mac間で相互に必要なファイルのバックアップを取ることにしました。 バックアップツールはrsyncを使います。rsyncは変更のあったファイルだけコピーする、ネットワーク越しのバックアップに適したツールでLinux(CentOS 5.2)、Mac(OS X 10.5.6)とも、…

テキストファイルを見つける

findのオプションにはなさそうだけど、Perlのファイルテスト演算子には-Tがあります。 $ find . | perl -nle 'print if -f && -T' ./access_counter.pl ./count.dat ./db_login_test.php ./index.html ... 他にどんなファイルテスト演算子があるかはperldoc…

Subversionでバージョン管理

導入からリモートでのチェックアウト、コミットまでを簡単に紹介。 導入 Subversion自体はだいたい最初から入ってると思います。 [mikeda@cent ~]$ rpm -qa | grep subversion subversion-1.4.2-2.el5 なければ「$ sudo yum install subversion」などで。 レ…

/bin/shと/bin/bashは同じもの

Linuxだと shはbashへのシンボリックリンクだったりします。cshとtcshも同じ関係ですね。 [mikeda@cent ~]$ ls -l /bin/*sh -rwxr-xr-x 1 root root 735004 5月 25 2008 /bin/bash lrwxrwxrwx 1 root root 4 11月 2 19:25 /bin/csh -> tcsh -rwxr-xr-x 1 roo…

nmapでpingスキャン、ポートスキャン

なにかと便利なnmapの紹介。 (他人のマシンに使わないように!!!) あのマシンのIPアドレスなんだっけ・・・というときにはpingスキャン。 # nmap -sP 192.168.0.0/24 Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2009-03-15 10:32 JST Hos…

echoと/bin/echo

echoにはシェルの内部コマンドのechoと/bin/echoがあります。 echoの移植性のなさ(改行抑止)で示したような混乱もまねくのですが、シェルの内部コマンドとしてのechoには便利な点もあります。それは通常コマンドと違い引数の長さに制限がないことです。(…

echoの移植性のなさ(改行抑止)

Redhat系のLinux、Solarisをよく使います。 コマンドの違いはtarのzオプション、gzgrepとzgrep、findのコマゴマした仕様など、いろいろあるんですが意外なところではechoの改行抑止があります。 先日、Linuxで動いていた/bin/shスクリプトがSolarisではちゃ…

nanosleep()の精度

usleepに続いてnanosleepの精度を確認。 gettimeofdayはマイクロ秒単位までしか測定できませんが、ナノ秒単位の精度がでることはなさそうなので気にしません。 検証プログラム #include <stdio.h> #include <sys/time.h> double get_time_sec(){ struct timeval tv; gettimeofday(</sys/time.h></stdio.h>…

usleepの精度

Linuxのスリープ関数の精度を試してみた。 sleep(sec)、usleep(usec)、nanosleep(nsec)とある。 まずはusleep。 検証プログラム #include <stdio.h> #include <unistd.h> double get_time_sec(){ struct timeval tv; gettimeofday(&tv, NULL); return tv.tv_sec + (double)tv.tv</unistd.h></stdio.h>…

ログ監視スクリプト

syslog-ngからこんな感じに起動してエラー発生時に指定の処理を行うスクリプトを書いた。 destination d_log_handle { program("cd /home/mikeda/bin;./log_handle.pl match_list"); }; log { source(s_sys); destination(d_log_handle); }; 仕様は ・エラー…

Perlで日本語メール送信(1)

基本となる考え方はこう。 ヘッダ JISコード + MIMEエンコード 本文 JISコード JISコードでスクリプトやWebページを書く人はいないだろうから文字コードの変換をやることになる。 よく見るのはjcode.plとmimew.plを用いるプログラム。 #! /usr/bin/perl requ…

指定コマンドを繰り返し、出力を監視するwatchコマンド

例えば非常に大きなディレクトリをtarで固めるとき、 進捗状況を確認するのにlsを手でうちまくる必要はない。watchを使えば指定コマンドの結果がデフォルト2秒ごとに更新表示される。 コマンド $ watch -d ls -l aaa.tgz 出力 Every 2.0s: ls -l aaa.tgz Tu…

メールの添付画像をDBに格納(メール配送部分)

前の日記で予告した修正版。メール配送部分。 特定ユーザのメール全てを対象とするのは運用上苦しいので画像受け取り用の仮想的なユーザ、imageを作ることにする。 方法1 /etc/aliasesに以下のように書けば仮想的なユーザ、image宛のメールを直接プログラム…

.forwardがちゃんと動作するためには

いつのまにかメール転送がされなくなってた。 /var/log/meillogを見てみると「World writable directory」というメッセージが。 どうも.forwardの配置ディレクトリのパーミッションがゆるすぎると怒られてるみたい。 ホームディレクトリのパーミッションはと…

ディスクが不調・・・

Linuxサーバでプシューって音がしたと思うと、ディスクがちゃんと読めなくなる事態が頻発。dmesgはこんなエラーが出まくってわけわからんことに。 end_request: I/O error, dev hda, sector 156046133 EXT3-fs error (device dm-0): ext3_find_entry: readin…

ftp転送をシェルスクリプトで

FTPの転送処理をシェルスクリプトで実行する例です。 まず理解すること ftpコマンドは標準入力からFTPの内部コマンドを受け取ることができます。たとえばこんなファイルを用意して、 open 192.168.1.10 user www PASSWORD cd /var/www/html ascii get index.…

ftpのログインを簡略化する.netrc

ftpコマンドを使う際、~/.netrcを使ってログインを簡略化できる。 machineでサーバを指定し、そのサーバにログインする際のユーザ、パスワード、初期化処理(initという名のマクロ)などを記述できる。 また、defaultを使えばmachineエントリのない全てのサー…

CentOSインストール

やったことメモ。 細かいとこ追記していくかも。 準備 ダウンロード(DVD) http://ftp.riken.jp/Linux/centos/5.2/isos/i386/ CentOS-5.2-i386-bin-DVD.iso 中身の確認 # mount -o loop /tmp/CentOS-5.2-i386-bin-DVD.iso /mnt # ls /mnt # umount /mnt DVD書…

自宅マシン

現状はこんな感じ。 PC1:キューブ型PC。OSはCentOS PC2:玄箱。OSはDebian MAC:MacBook Air ルータ:coregaのブロードバンドルータ FONルータ:みんなで共有無線LANルータ