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

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


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

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

今日は、ものまねのコロッケさんの公演を観てきました。

…いえ、別に、ファンとかというわけではなく、欠員が出たため、 ピンチヒッターで参加しただけです。(お笑いスター誕生は見てましたけどね。)

あまり気乗りはしなかったのですが、経験しないよりもしたほうがよい、 と思うようにしてますので、今回も、そういう公演がどんなものなのか、 というのが気になり、参加すべく手を上げてみました。
(もれなくついてくる弁当が気になった、というのもあります。)

で、内容ですが、思ったよりも面白く、涙が出るほど笑いました。
前半のお芝居がなぁとか、 途中休憩の30分で弁当を食べないといけないというせわしなさとか、 気になる点もありましたが、最終的には面白かったですし、 腹の底から笑えましたので、行ってよかったと思いました。
(ちなみに、弁当は、若干量が少なかったですが、お上品で美味でした。)

でも、1万3千円というお値段は、自腹ではちょっと払えません。
もう行くことが限りなくないと思うと、今日の経験をいい思い出として、 脳ミソに刻み込んでおくべきだと、強く思いました。

よくわからない話でしたが、今週も、はりきってまいりましょう!

今週のお題 - いろんなものを越えてファイル転送を行う

遠隔地にあるサーバの設定を行うときや、 その遠隔地に出向いてサーバの設定を行う際、 手元にある設定ファイルなどをサーバに持っていきたい、 ということがあると思います。

しかし、途中の経路にファイアウォールなどがあったり、 シリアルポートを介してログインしていますと、ftp や scp などを使って、 ファイルを送ることができないことがあります。

あるいは、受け手側のマシン上で ftpd や sshd が動作しておらず、 動作させることができないという場合にも、ファイル転送できなくて、 途方に暮れてしまうのではないかと思います。

そんなときに、途中の経路がどうであれ、最終的なログイン先と、 手元のマシンとの間で、ファイル転送を行う方法があります。

やや小ネタっぽいですが、今週は、そんな状況下でのファイル転送の方法を、 ご紹介したいと思います。


仕組み自体は単純です。
遠隔ログインしている先のサーバとの間の経路がどうであれ、 少なくともシェルなどの入出力が、 端末エミュレータを介して行えているわけです。
これを利用して、ファイル転送を行うことができます。

ただし、これを行うためには、 サーバに lrzsz というパッケージが必要になります。
Fedora 系では標準でインストールされるようですが、 他では別途追加でインストールなどする必要があるかもしれません。 DVD-ROM や CD-ROM の中を探索するなどして、インストールしてみてください。

あるいは、最近の Vine Linux などでは、見当たらなかったりすることもあります。 そんなときは、rpmfind.net などのサイトでパッケージを入手するか、 下記サイトからソースを入手し、コンパイルしてみてください。

lrzsz
http://www.ohse.de/uwe/software/lrzsz.html

上記サイトをみていただくとわかると思いますが、lrzsz は、 ZMODEM 等のバイナリ転送プロトコルを用いて、ファイル転送を行うものです。

いくつかコマンドがありますが、ZMODEM を用いる場合は、 rz コマンドでファイルの受信、sz コマンドでファイルの送信を行うことができます。


では、具体的な手順をご紹介しましょう。

ただ、残念ながら、手元のマシンが Windows である必要があります。
(いえ、Mac でも Linux でも、 ZMODEM などでファイルの送受信を行える端末エミュレータがあれば可能です。 わたしが知らないだけです。)

以降では、Windows にもれなくついてくるハイパーターミナルか、 それに準ずるくらいユーザがいそうな Tera Term を用いて行う方法を、 ご紹介します。(他の端末エミュレータでも、その機能があれば可能です。)

 

ハイパーターミナルで送信する場合

  • ログイン先の Linux マシンへファイルを送信するには、 まず Linux 上で rz コマンドを実行します。オプションはとりあえず不要です。
      % rz
      rz waiting to receive.**B0100000023be50  <= こういうのが出ます
    
  • あちらの Linux が受信待ち状態にありますので、ハイパーターミナル上で、 転送 -> ファイルの送信 を選択します。
  • ファイル名とプロトコルを聞かれますので、送信したいファイル名と、 プロトコルには Zmodem を指定してください。
    うまくいけば、rz コマンドを実行したディレクトリ上に、 ファイルが作成されているはずです。

ハイパーターミナルで受信する場合

  • ハイパーターミナル上で、転送 -> ファイルの受信 を選択します。
  • ファイルの保存先とプロトコルを聞かれますので、 保存したいフォルダを指定して、キャンセルか閉じるボタンを押します。
    (受信を開始してしまうと、Linux 側の送信を開始できませんので。)
  • ログイン先の Linux マシンからファイルを受信するため、 Linux 上で sz コマンドを実行します。送信したいファイルを引数に指定します。 うまくいけば、保存先に指定したフォルダ上に、ファイルが生成されているはずです。
      % sz httpd.conf
      **B00000000000000  <= こういうのが出ます
    

Tera Term で送信する場合

  • ハイパーターミナルと同様に、Linux 上で rz コマンドを実行します。
  • Tera Term 上で、File -> Transfer -> ZMODEM -> Send... を選択し、 送信したいファイルを選択します。
    うまくいけば、rz コマンドを実行したディレクトリ上に、ファイルが作成されます。

Tera Term で受信する場合

  • Tera Term 上で、File -> Change Directory... を選択して、 保存先のフォルダを指定します。
  • ハイパーターミナルと同様に、Linux 上で sz コマンドを実行します。
    送信したいファイルを引数に指定するのも、同様です。
  • Tera Term 上で、File -> Transfer -> ZMODEM -> Recv... を選択すると、 うまくいけば、指定したフォルダ上に、ファイルが生成されます。

以上です。文章にするとわかりにくいですが、実際にやってみると、 それほど難しくはない…と思います。(たぶん)

蛇足ですが、Tera Term の場合、Linux 上で、

  % cat > ファイル

と実行しておき、Tera Term 上で、File -> Send file... を選択して、 送信したいファイルを指定しても、ファイルを送信できます。
ただし、誤り訂正などが一切行われませんので、信頼性は低いです。
(lrzsz パッケージがないときなど苦肉の策なときに、お試しください。)


以上、さまざまな障害を乗り越えて、ファイル転送を行う方法について、 ご紹介しました。

途中の経路にシリアルがっていうケースは、いまどきないかもしれませんが、 組込み機器の場合、 ネットワーク・インターフェースがついていないことがありますので、 そんなときに使える可能性が出てきます。
(PPP でつないでしまう、という方法もありますが、カーネルが対応していない、 というさらに稀な状況であれば、発揮できるかもです。)

…まあ、そんなレアなケースがそうそうあるとは思いませんが、 もしものときのために、あるいはウンチクたれるときにでも、ご活用ください。

宿題の答え

先週の宿題は、

  ディレクトリスタックの状態を PROMPT_COMMAND で表示する際に、
  長いパスを短く表示してみましょう。

でした。

先週ご紹介したものですと、以下のように、 dirs コマンドの出力結果をそのままウィンドウのタイトルに表示していました。

  export PROMPT_COMMAND='echo -ne "\033]0;`dirs`\007"'

しかし、たとえば以下のように、 長いパス名のところをいくつか並行して作業していると、dirs の出力が長くて、 タイトルに収まりきらなくなることがあると思います。

  /etc/udev/rules.d /etc/postfix /usr/X11R6/lib/X11/fonts

それではまず、単純に、dirs で得られる各パスを、 basename で処理してみたいと思います。

  function short_dirs() {
      dirs -p | while read dir; do
          echo -n "[`basename \"$dir\"`]"
      done
  }
  export PROMPT_COMMAND='echo -ne "\033]0;`short_dirs`\007"'

関数 short_dirs では、 dirs -p (-p をつけると1行1パスで出力)の出力結果を basename で処理し、 さらにその結果を [] で囲んでいます。

たとえば、先ほどの例の場合には、以下のように表示されます。

  [rules.d][postfix][fonts]

…うーん、わたしの感覚では、ちょっとわかりづらい気がします。
そこで次に、ある文字数までを出力するようにしてみました。

  function short_name() {
      while [ -n "$1" ]; do
          l=`echo -n $1 | wc -c`
          [ $l -ge 16 ] && echo "...${1:$l-13}" || echo $1
          shift
      done
  }
  function short_dirs() {
      dirs -p | while read dir; do
          echo -n "[`short_name \"$dir\"`]"
      done
  }
  export PROMPT_COMMAND='echo -ne "\033]0;`short_dirs`\007"'

basename の代わりに、short_name という関数を使用しています。
これは、パスが16文字以上なら、前の方を省略して出力します。
これですと、先ほどの例の場合には、以下のように表示されます。

  [.../udev/rules.d][/etc/postfix][...lib/X11/fonts]

…まあ、賛否両論ありそうですが、basename よりはわかると思います。

ちなみに、これは、わたしが実際に使用しているものです。 表示するパスの長さは違いますけど。もし長さを調節したい場合は、 short_name 内の 16 とか 13 を、お好みのサイズに変更してください。

今週の宿題

今週の宿題は、

  今回ご紹介した方法で、複数のファイルを送受信できるでしょうか。

です。

これはもう、試すだけだと思いますので、試してみてください。

あとがき

友人とともに、わたくしがレンタルしているサーバには、 とあるポートにアクセスがあると、メールで通知するというモノを仕込んであります。

Vol.014 - tcp_wrapper でアクセス制御 〜 の宿題の答え
http://www.usupi.org/sysad/014.html

インターネットに接続しているサーバを管理されているかたなら、 ご存じだと思いますが、毎日、 いろいろなポートに対して不正なアクセスがありますので、 上記の仕込みによって、1日に何通かメールが飛んできます。

…はい、そうです、みなさんお察しのとおり、先日、その通知メールが、 1晩で千通近く届いておりました。

メール一覧に、ずらりと並ぶ、通知メールの無機質な題名…圧巻です。

通知メールの目的にそった行動をするなら、千通すべてに目を通す必要があります。 しかし、それは時間的にもやる気的にも、ほぼ不可能です。
とはいえ、せっかく通知していただいたメールを、 家内制手工業的に全部消すというのも、いかがなものかという気がします。
しかたがないので、grep で大事なメッセージだけを抜き出し、 問題ないことを確認してから、全部消しました。

一度仕込むと、それで満足してしまいがちですが、ときどきは見直して、 改良していく必要があるなあと思いました。
(ここはひとつ、がんばって前向きにとらえてみました。ふぅ。)

 

ところで、今週のネタは、いかがでしたでしょうか。
どうも、本題の内容が短いときは、ほかの文章が長くなる傾向があるように思います。 宿題の答えのほうが長いかもっていう気すらします。
また、文章がとっても言い訳っぽいです。何か後ろめたいのでしょうか。

来週は、後ろめたさを感じないネタを、考えたいと思います。(-ε-;;;
あまり期待せずに、お待ちいただけますと幸いです。

 

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

 

「いますぐ実践! 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/ (栗日記ブログ)


[バックナンバーのトップへ] [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

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本