
|
[バックナンバーのトップへ] [Linux システム管理のトップへ] いますぐ実践! Linux システム管理 / Vol.121 / 読者数:1160名こんばんは、うすだです。 今日は、ものまねのコロッケさんの公演を観てきました。 …いえ、別に、ファンとかというわけではなく、欠員が出たため、 ピンチヒッターで参加しただけです。(お笑いスター誕生は見てましたけどね。)
あまり気乗りはしなかったのですが、経験しないよりもしたほうがよい、
と思うようにしてますので、今回も、そういう公演がどんなものなのか、
というのが気になり、参加すべく手を上げてみました。
で、内容ですが、思ったよりも面白く、涙が出るほど笑いました。
でも、1万3千円というお値段は、自腹ではちょっと払えません。 よくわからない話でしたが、今週も、はりきってまいりましょう! 今週のお題 - いろんなものを越えてファイル転送を行う遠隔地にあるサーバの設定を行うときや、 その遠隔地に出向いてサーバの設定を行う際、 手元にある設定ファイルなどをサーバに持っていきたい、 ということがあると思います。 しかし、途中の経路にファイアウォールなどがあったり、 シリアルポートを介してログインしていますと、ftp や scp などを使って、 ファイルを送ることができないことがあります。 あるいは、受け手側のマシン上で ftpd や sshd が動作しておらず、 動作させることができないという場合にも、ファイル転送できなくて、 途方に暮れてしまうのではないかと思います。 そんなときに、途中の経路がどうであれ、最終的なログイン先と、 手元のマシンとの間で、ファイル転送を行う方法があります。 やや小ネタっぽいですが、今週は、そんな状況下でのファイル転送の方法を、 ご紹介したいと思います。
仕組み自体は単純です。
ただし、これを行うためには、
サーバに lrzsz というパッケージが必要になります。 あるいは、最近の Vine Linux などでは、見当たらなかったりすることもあります。 そんなときは、rpmfind.net などのサイトでパッケージを入手するか、 下記サイトからソースを入手し、コンパイルしてみてください。
lrzsz 上記サイトをみていただくとわかると思いますが、lrzsz は、 ZMODEM 等のバイナリ転送プロトコルを用いて、ファイル転送を行うものです。 いくつかコマンドがありますが、ZMODEM を用いる場合は、 rz コマンドでファイルの受信、sz コマンドでファイルの送信を行うことができます。 では、具体的な手順をご紹介しましょう。
ただ、残念ながら、手元のマシンが Windows である必要があります。 以降では、Windows にもれなくついてくるハイパーターミナルか、 それに準ずるくらいユーザがいそうな Tera Term を用いて行う方法を、 ご紹介します。(他の端末エミュレータでも、その機能があれば可能です。)
ハイパーターミナルで送信する場合
ハイパーターミナルで受信する場合
Tera Term で送信する場合
Tera Term で受信する場合
以上です。文章にするとわかりにくいですが、実際にやってみると、 それほど難しくはない…と思います。(たぶん) 蛇足ですが、Tera Term の場合、Linux 上で、 % cat > ファイル
と実行しておき、Tera Term 上で、File -> Send file... を選択して、
送信したいファイルを指定しても、ファイルを送信できます。 以上、さまざまな障害を乗り越えて、ファイル転送を行う方法について、 ご紹介しました。
途中の経路にシリアルがっていうケースは、いまどきないかもしれませんが、
組込み機器の場合、
ネットワーク・インターフェースがついていないことがありますので、
そんなときに使える可能性が出てきます。 …まあ、そんなレアなケースがそうそうあるとは思いませんが、 もしものときのために、あるいはウンチクたれるときにでも、ご活用ください。 宿題の答え先週の宿題は、 ディレクトリスタックの状態を 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 という関数を使用しています。 [.../udev/rules.d][/etc/postfix][...lib/X11/fonts] …まあ、賛否両論ありそうですが、basename よりはわかると思います。 ちなみに、これは、わたしが実際に使用しているものです。 表示するパスの長さは違いますけど。もし長さを調節したい場合は、 short_name 内の 16 とか 13 を、お好みのサイズに変更してください。 今週の宿題今週の宿題は、 今回ご紹介した方法で、複数のファイルを送受信できるでしょうか。 です。 これはもう、試すだけだと思いますので、試してみてください。 あとがき友人とともに、わたくしがレンタルしているサーバには、 とあるポートにアクセスがあると、メールで通知するというモノを仕込んであります。
Vol.014 - tcp_wrapper でアクセス制御 〜 の宿題の答え インターネットに接続しているサーバを管理されているかたなら、 ご存じだと思いますが、毎日、 いろいろなポートに対して不正なアクセスがありますので、 上記の仕込みによって、1日に何通かメールが飛んできます。 …はい、そうです、みなさんお察しのとおり、先日、その通知メールが、 1晩で千通近く届いておりました。 メール一覧に、ずらりと並ぶ、通知メールの無機質な題名…圧巻です。
通知メールの目的にそった行動をするなら、千通すべてに目を通す必要があります。
しかし、それは時間的にもやる気的にも、ほぼ不可能です。
一度仕込むと、それで満足してしまいがちですが、ときどきは見直して、
改良していく必要があるなあと思いました。
ところで、今週のネタは、いかがでしたでしょうか。
来週は、後ろめたさを感じないネタを、考えたいと思います。(-ε-;;;
今週も、ここまで読んでいただき、ありがとうございました。
「いますぐ実践! Linux システム管理」の解除は、以下からできます。
バックナンバーは、こちらにほぼ全部そろっています。
「栗日記」−この時期だけ、アクセス数が倍くらいになります。 |
▼ トップ ▼ プロフィール ▼ リンク
▼ 作ってみました
▼ せんでん
▼ 最近読んだ本
▼ 気に入ってる本 |