いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.095 / 読者数:996名

こんばんは、うすだです。

わたくしごとで恐縮ですが、 当メルマガ(さりげなく「シス管」と言ってみたりしておりますが)は、 Vol.001 を発行してから2年を経過しました。

こっそり自分の中で、2年で1000人は越さないとな、 という最低レベル的目標値を掲げておりましたが、なんとか達成することができました!

 

 

…という感じで、気持ちよく書き進んでいくはずだったんですが、 金曜日に読者数がごっそり減ったため、夢の1000人越えは、幻となりました。

いやいや、そもそも読者数なんて気にせず、 みなさんのお役に立つコトを目的として発行することに、意義があるのです。です!

ですので、これからも、 最後の一滴を絞り出すようにネタを考えていこうと思っております。 今後とも、おつき合いをいただけますと幸いです。

…なんて、ほんとはヘコんでますが、今週も、はりきってまいりますよ。

今週のお題 - メールでファイルを分割して送る

いまや、いつでもどこでもインターネットとつながり、大容量のファイルを、 インターネットを介してやりとりするのが、ごく当たり前の世の中となりました。

とはいえ、企業さんの社内LAN などでは、直接つながっていなかったり、 接続にさまざまな制限がかかっているのが、現状ではないかと思います。

しかし、現実とは厳しいもので、そんな過疎地にいる恵まれないかたと、 大容量のデータを受け渡す必要が、マーフィーの法則のように、 結構頻繁に生じたりするわけですね。

データを CD-R などに記録して、宅急便で明日午前中必着! とすれば済む場合もありますが、今日中に送って! と言われることもよくあります。

そんなときでも、必ずといっていいほど使えるのは、メールです。
じゃあ、メールで添付してしまえば…と言いたいところですが、過疎地の場合、 メールの受信容量に制限がかかっていて、受けとってもらえないというケースが、 わたしの経験では、かなりの確率であります。

…というときのために、今週は、ファイルを分割して、メールで送る方法を、 ご紹介したいと思います。


なにか釈然としない、もやもやしたものを感じた貴兄がいらっしゃるかもしれませんが、 気にしないで、以降を読んでくださいませ。

さて、ファイルを分割するといえば、split コマンドです。
もっとも簡単な使い方は、分割するファイルを引数に指定する方法です。

  % split secret.txt

デフォルトでは、1000行毎に分割して、 xaa, xab, ... というファイルを作成してくれます。 (引数に指定したファイルは、そのまま残ります。)

ただし、アーカイブなどのバイナリファイルの場合には、 行という概念がありませんので、おかしな分割をされてしまいます。
そんなときは、-b オプションを用いて、バイト単位で区切りましょう。
以下の例では、1MB(=1,048,576バイト)単位で分割しています。

  % split -b1048576 secret.tar.bz2
  % ls -l x??
  -rw-r--r-- 1 usu adm 1048576 Mar  4 23:46 xaa
  -rw-r--r-- 1 usu adm 1048576 Mar  4 23:46 xab
  -rw-r--r-- 1 usu adm 1048576 Mar  4 23:46 xac
  ...

分割したファイル名が気に入らないという貴兄は、引数のファイル名の後に、 x に代わる名前を指定します。

  % split -b1048576 secret.tar.bz2 secret_
  % ls -l secret_??
  -rw-r--r-- 1 usu adm 1048576 Mar  5 00:06 secret_aa
  -rw-r--r-- 1 usu adm 1048576 Mar  5 00:06 secret_ab
  -rw-r--r-- 1 usu adm 1048576 Mar  5 00:06 secret_ac
  ...

あとは、これらのファイルを、メールに添付して送るだけですね。

ちなみに、base64 でエンコードして送る場合、 もとのサイズの約 1.3 倍に肥大しますので、 それを考慮したサイズで分割してください。
(たとえば、受けとる相手のメールの制限が 10MB なら、 分割するサイズは 7.5MB くらいが上限だと思ってください。)


さて、分割されたファイルを受けとった側は、cat で連結すると、 もとのファイルに復元できます。

  % cat x?? > secret.tar.bz2

受けとり側が Windows の場合は、COPY コマンドで復元します。

  > COPY/B x?? secret.tar.bz2

厳密には、復元したファイルがもとと同じかどうか、 MD5 の値などを確認するようにしてください。


以上、split コマンドを使って、ファイルを分割してメールで送る方法を、 ご紹介しました。

メールの受信容量に制限がない場合でも、 回線が細すぎてコネクションが切れる可能性のあるときに、 分割して送る方法が有用なことがあります。
そんな微妙な窮地に遭遇したら、思い出していただけますと幸いです。

それから、生でファイルを送るとまずい内容の場合は、 GnuPG などで暗号化して送るようにしましょう。

Vol.087 - ファイルを暗号化する
http://www.usupi.org/sysad/087.html
Vol.088 - 暗号化したファイルをやりとりする
http://www.usupi.org/sysad/088.html

 

…えーと、実は、まったく違うネタを、当初考えていました。
しかし、日曜日の夜という差し迫った状況で、過去に紹介済だったことに気づき、 急遽、別のネタを絞り出した次第です。
(過去の自分は今の自分とは別人だ、ということを、再確認しました。)

それってシステム管理なのかよ! とか、今週は短いぞ! という突っ込みをいただきそうですが、 広い心と温かい目で見守っていただけますと、来週はがんばれるかもしれません。

宿題の答え

先週の宿題は、

  /etc/passwd の状態を5秒毎に監視して、状態が変化したときメールで
  通知するスクリプトを作成して、常時動かしてみましょう。

でした。

というわけで、こんなスクリプトを書いてみました。

  #!/bin/sh
  # Mail コマンドで root に通知する関数
  sendalert() {
      /usr/bin/Mail -s "[Alert] $1 status changed" root << E-O-F
  Old: $2
  New: $3
  E-O-F
  }

  # 引数がなければ /etc/passwd を、あれば引数のファイルをチェック
  if [ $# -eq 0 ]; then
      CHECKFILE=/etc/passwd
  else
      CHECKFILE=$1
  fi
  if [ ! -f "$CHECKFILE" ]; then
      echo "$CHECKFILE: not found"
      exit 1
  fi

  # $oldstat に古い状態、$newstat に今の状態を入れて、ひたすら比較
  oldstat=`/bin/ls -l "$CHECKFILE"`
  newstat=$oldstat
  while [ -f "$CHECKFILE" ]; do
      sleep 5
      newstat=`/bin/ls -l "$CHECKFILE"`
      if [ "$oldstat" != "$newstat" ]; then
          sendalert "$CHECKFILE" "$oldstat" "$newstat"
          oldstat=$newstat
      fi
  done

/etc/passwd だけっていうのもそっけないので、 監視するファイルを引数で指定できるようにしておきました。
で、ls -l の結果が5秒前と異なる場合、メールでその旨を通知します。

このファイルを、たとえば /usr/local/sbin/filecheck.sh という名前で保存したら、 とりあえずその場で実行してみます。

  # chmod +x /usr/local/sbin/filecheck.sh
  # /usr/local/sbin/filecheck.sh

そして、ちゃんと動くかどうか、/etc/passwd を触ってみます。

  # touch /etc/passwd

以下のようなメールが root に届けば、成功です。

  Subject: [Alert] /etc/passwd status changed

  Old: -rw-r--r-- 1 root root 1626 Feb 28 11:50 /etc/passwd
  New: -rw-r--r-- 1 root root 1626 Mar  3 23:33 /etc/passwd

あとは、前回の通りに登録して、常時動かしてみてください。

しかし、このままですと、実用性としてはやや微妙な感じがします。
実運用の際には、複数ファイルの監視や、 差分(diff)の通知なども必要ではないかと思います。 余力のあるかたは、改造してみてください。

と言いますか、本来なら、監視をカーネルにさせるべきかもしれません。
わたしは、いにしえの頃に Dazuko というカーネル・モジュールを使っていました。 今もありますので、気になる貴兄は、以下をご覧ください。

Dazuko - it's time to get serious
http://www.dazuko.org/

今週の宿題

今週の宿題は、

  ファイルを分割して送信するスクリプトを作りましょう。

です。

split で分割したファイルを、MUA でいちいち添付して送信するのは面倒ですよね。 ここは、スクリプトで一気に処理したいところです。

metamail に含まれる metasend あたりがお手軽っぽいのですが、Fedora さんには、 metamail パッケージが見当たりません。
ですので、perl5-MIME-tools を使って、実現してみようと思います。

あとがき

最近、本業に直結しない本ばかり読んでいます。
今読んでいるのも、デザイン論に関する書籍です。

わたしは、本業が組み込み屋で、 ポーティングとかドライバ書いたりとかを延々としていますので、 ちょっと違う世界も覗いてみたいんですよね。

クロフォードのインタラクティブデザイン論
http://www.amazon.co.jp/exec/obidos/ASIN/4274065944/usupiorg06-22

この本は、インタラクティブデザインの概念的なところを、 くだけた口調でわかりやすく説明してくれます。素人のわたしが読んでも面白いです。

たとえば、インタラクションは、 「聞く」「考える」「話す」という要素からなると考えて、 今のコンピュータのデザインがどうなのか (たとえばキーボードは「聞く」という行為に適するのかどうか)、 今後どうあるべきかを、いろんな例を交えて説いてくれます。(脱線も多いですが。)

具体的なテクニックについては、特に述べられていませんが、 それが逆に素人なひと向きに書かれているようでもあります。
アマゾンの書評は微妙ですが、わたしは、いろいろ考えさせられました。
まさに、「訓練」するのではなく「啓発」することを目的とする、 という記述にふさわしい内容です。
興味のあるかたは、図書館で借りるなどしてみてくださいませ。

 

…と、唐突かつ一方的に紹介してしまいました。申し訳ありません。
しかし、うまくいかないときは、とことんダメですね。
ま、いい経験になったと思って、来週からがんばります。

 

今週も、ここまで読んでいただき、ありがとうございました。
それでは、また来週に、お会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」−実生活は地味ですが、絵はわりとポップな感じかもです。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://www.fumido.co.jp/kuriniki/ (栗日記ぎゃらりー)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本