Linuxコマンドとviとシェルスクリプト
Linux > Linuxコマンドとviとシェルスクリプト > 基本コマンド、セキュリティコマンド
はじめに
アドバイスすることは、特に1つだけです。
偶然に、このWebにたどりついたあなたが
初心者で、これからLinuxを学ぶ
あるいは、少しだけコマンドをうったことがあるだけなので、もっともっと知識をつけたいと思っているならば、
LinuxWorld メモリアルDVDブック [2001-2007]と、コマンド本を買って、まずは最低買っておきましょう。
遅かれ、早かれ、必要になります。
くれぐれも、ウン十万円も払って、巷のスクールに通う前に、まずは自分で動かせるだけ動かしましょう。
今でも、スクールに何十万円、ひどいケースでは100万円近く払ってLinuxを習いに行く人もいるようですが、お金がもったいないだけです。
お金を払って習ったから就職・転職できるわけでは、ないということだけは、頭においておいてソンはないです。
初心者を卒業した人、中級者向け・・・Inside Linux Software オープンソースソフトウェアのからくりとしくみ
■Inside Linux Software オープンソースソフトウェアのからくりとしくみ
価格:¥2,709(税込)
出版社:翔泳社
以前も、レビューしたことがありましたが、久しぶりに読んでたんですが、面白かったです。
すっかり、忘れていることもあり、前はこんなことよくやってた時期あったなぁーということもあり。
patchの作成・適用のP198~P213なども、初心者レベルの人でもかなり勉強になります。
diffコマンドやpatchコマンドを使用してのテキストパッチ作成は、必読内容だと思います。
というか、知っておくべき。あんまりLinuxビギナー向けの本にも載ってないし、講習でもやってないし。
※講師が、知らんから?(^^)
他にも役立つ内容いっぱいです。
冒頭の「gccによるコンパイルの裏側」とか。
初心者も中級者も使えます・・・LinuxサーバHacks―プロが使うテクニック&ツール100選
■LinuxサーバHacks―プロが使うテクニック&ツール100選
価格:¥2,310(税込)
出版社:オライリージャパン
2003年に発売された本で、今(2009年4月)に見返しているんですが、これは初級者・中級者の人など幅広く使える本ですね。
また、下記の質問に答えられなかった人にも、オススメです。
いや、改めて驚いたな。さすが、オライリー本。
もう1度初心に帰って、
私の学習書籍・・・Linuxアドバンストネットワークサーバ構築ガイド HAサーバ構築編
■Linuxアドバンストネットワークサーバ構築ガイド HAサーバ構築編
価格:¥3,675(税込)
出版社:秀和システム
Amazonのレビューでも評価が高い本ですが、初心者のみならず、経験者でも活用できる箇所が多いです。
特に、bonding関連の設定が書かれている本は、これくらいだし、keepalivedによる監視、heartbeatによるサービス監視、その他、スイッチなどについても関連付けて書かれている書籍は、これくらいしかありません。
なので、設計・構築とかやっている人は、手元に1冊置いておくべきでしょう。きっと。
ここまで書いてくれていたら、相当役に立ちますよ。
実務で使っている設定・構成図などをそのまま(あるいは修正して)掲載してくれてますので、見やすくわかりやすいです。
いまだに、十分、オススメできる1冊です。
私のおすすめ書籍・・・Unixシステムパフォーマンスチューニング 第2版
■Unixシステムパフォーマンスチューニング 第2版
価格:¥3,780(税込)
出版社:オライリージャパン
山積みになった本の中からようやく見つけることができました。
SE的な仕事をしている人は、おそらく皆持っていると思いますけど。
「パフォーマンスは?限界性能は?」
という質問を投げられた時に、この書籍にあるような内容、あるいはテスト・動作確認を行う(行える)人は意外に少ないと思います。
基本的なコマンドも多いので、まずは、1章から読んでみると良いです。
64ビットと32ビットのところの話も、エンジニアの人でも、このくらいの事は、簡潔に答えることができないといけないと思いますが、いかがでしょうか?
書店で買おうかどうか決める人は、まずP10の「1.2.5 原則4:テストは慎重に」を読んでから、買うかどうかを決めると良いと思います。
私のおすすめ書籍・・・UNIXシェルスクリプト逆引き大全333の極意―Linux,FreeBSD,Solaris,Mac OS X
■UNIXシェルスクリプト逆引き大全333の極意―Linux,FreeBSD,Solaris,Mac OS X
価格:¥2,520(税込)
出版社:秀和システム
書店で中身を見て、多少厚みのある重い本だったので、アマゾンで買いました(^^)。
中身は、結構充実していると思います。
シェルスクリプト学習本として、サンプルが欲しい方にも向いていると思いますし、ncコマンドのlistenで待ちうけさせるとか、tcpserverを使うとか、結構、知っておくと便利な知識も出てくるので、初級中級を1冊でカバーしたいという人に向いていると思います。
文字列の扱いに関しても、P91~P112あるので、一通りの知識を得たい方には、十分な内容となってます。
Linuxコマンド・・・nmap(シーズン1)
Fedora 8にnmapが
インストールされています。
、
それを使って、
自社でのセキュリティ診断を
行いましょう。
本日は、2つの診断を行ってみます。
1.自社サーバーのポートの空き状況
2.自社サーバーのOS情報
1は、カンタンですね。
早速やってみます。
.# nmap 192.168.1.111
Starting Nmap 4.20 ( http://insecure.org )at 2007-12-21 17:31 JST
Interesting ports on 192.168.1.111:
Not shown: 1695 closed ports
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
Nmap finished: 1 IP address (1 host up) scanned
in 0.248 seconds
2.オプション -Oを使用します。
使用OSを知る。
※自分で、man nmap してオプションの意味を
調べる習慣づけを行うと良いです。
# nmap 192.168.1.111 -O
Starting Nmap 4.20 ( http://insecure.org ) at 2007-12-21 17:13 JST
Interesting ports on 192.168.1.111:
Not shown: 1695 closed ports
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
Device type: general purpose|WAP|load balancer|broadband router|storage-misc|specialized
Running (JUST GUESSING) : Linux 2.6.X|2.4.X (97%), Siemens linux (92%), Kemp embedded (90%), Linksys embedded (90%), Linksys Linux 2.4.X (90%), Asus Linux 2.4.X (90%), Maxtor Linux 2.4.X (90%), Atmel Linux 2.6.X (89%)
Aggressive OS guesses: Linux 2.6.18 (97%), Linux 2.6.17.8 SMP (x86) (96%), Linux 2.6.17 - 2.6.18 (96%), Linux 2.6.17 (Gentoo, x86) (95%), Linux 2.6.17 (x86) (95%), Linux 2.6.14 - 2.6.17 (94%), Linux 2.6.17 - 2.6.18 (x86) (94%), Linux 2.6.17-10.33 (Ubuntu) (94%), Linux 2.6.18 - 2.6.19 (x86) (94%), Linux 2.6.18.2 (x86) (94%)
No exact OS matches for host (test conditions non-ideal).
Uptime: 0.028 days (since Fri Dec 21 16:33:16 2007)
Network Distance: 0 hops
OS detection performed. Please report any incorrect results at http://insecure.org/nmap/submit/ .
Nmap finished: 1 IP address (1 host up) scanned in 14.111 seconds
それにしても、
色々なLinuxの名称が出てきましたね。
そっちの方に関心がいってしまいますねー。
Linuxコマンド・・・nmap(シーズン2)
さて、3つ目の診断です。
引き続きnmapを使います。
昨日、サーバーのポートが開いているのが
確認できました。
その中に、当然のごとく
SSHの22番ポートがありました。
さて、このSSHで使用しているであろう、
OpenSSHのバージョンは、
わかるのでしょうか?
これが、3つ目です。
3.
# nmap 192.168.1.111 -sV
Starting Nmap 4.20 ( http://insecure.org ) at 2007-12-22 19:53 JST
Interesting ports on 192.168.1.111:
Not shown: 1695 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.7 (protocol 2.0)
111/tcp open rpc
Service detection performed. Please report any incorrect results at http://insecure.org/nmap/submit/ .
Nmap finished: 1 IP address (1 host up) scanned in 6.563 seconds
この-sVオプションは、
man nmapで調べることができます。
参考までに。
↓
SERVICE/VERSION DETECTION:
-sV: Probe open ports to determine service/version info
BINDを起動させて、再度
確認してみました。
↓
# nmap 192.168.1.111 -sV
Starting Nmap 4.20 ( http://insecure.org ) at 2007-12-22 19:57 JST
Interesting ports on 192.168.1.111:
Not shown: 1694 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.7 (protocol 2.0)
53/tcp open domain
111/tcp open rpcbind 2-4 (rpc #100000)
先ほどは、表示されなかった、
2-4(rpc #100000) が、今度は
表示されていますね。
1度だけでは、確認しきれないのかもしれないので、
2・3度行う必要があるのかも
しれません。
少し、nmapの実装を調べる必要が
ありますね。
最後に、Apacheも起動させて
確認します。
↓
# nmap 192.168.1.111 -sV
Starting Nmap 4.20 ( http://insecure.org ) at 2007-12-22 20:01 JST
Interesting ports on 192.168.1.111:
Not shown: 1692 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.7 (protocol 2.0)
53/tcp open domain
80/tcp open http Apache httpd 2.2.6 ((Fedora))
111/tcp open rpcbind 2-4 (rpc #100000)
443/tcp open ssl/http Apache httpd 2.2.6 ((Fedora))
Service detection performed. Please report any incorrect results at http://insecure.org/nmap/submit/ .
Nmap finished: 1 IP address (1 host up) scanned in 12.403 seconds
おっとーー。
ここで、Fedoraだと、バレますね。
httpd.confの記述がデフォルトなので、
おおよそ、どこから情報がもれたか
検討はつきますけれど。
CentOSなどでも、
やってみる必要がありますね。
Linuxコマンド・・・nmap(シーズン3)
さて、前回の診断で
ApacheのバージョンやOSが知られることが判明しました。
デフォルト設定で起動していたので、
見た瞬間、
「おそらくアレを修正すれば、出ないだろう」と思って
設定ファイルを修正してみました。
再度、nmap 192.168.1.111 -sV すると
下記のようになりました。
# nmap 192.168.1.111 -sV
Starting Nmap 4.20 ( http://insecure.org ) at 2007-12-30 16:41 JST
Interesting ports on 192.168.1.111:
Not shown: 1693 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.7 (protocol 2.0)
80/tcp open http Apache httpd
111/tcp open rpcbind 2-4 (rpc #100000)
443/tcp open ssl/http Apache httpd
Service detection performed. Please report any incorrect results at http://insecure.org/nmap/submit/ .
Nmap finished: 1 IP address (1 host up) scanned in 12.402 seconds
Apacheであることは、バレますが、
Apacheのバージョン及び、使用OSは
わからなくなりました。
2007年、これまで当たり前としていた
Apacheの設定を見直す動きが、
増えました。
セキュリティ診断を行った企業では、
デフォルト設定のままにしていた
設定ファイルの中身を
修正したところも、多いです。
これを読んでいる人は、
具体的にどこを修正するべきか、
自分で調べてみてはどうでしょうか?
すぐにわかるはずです。
Linuxコマンド・・・nmap(シーズン4)
日経コミュニケーション 2008年3月1日号に
出ていたものです。
1つだけ
ここで、とりあげたことが
なかったオプションなので、
載せておきます。
-T5と書いていますが、
-T4など、速度を速めることができるようです。
# nmap -T5 192.168.0.111
Starting Nmap 4.52 ( http://insecure.org ) at 2008-03-01 23:48 JST
Interesting ports on 192.168.0.111:
Not shown: 1711 closed ports
PORT STATE SERVICE
22/tcp open ssh
53/tcp open domain
111/tcp open rpcbind
Nmap done: 1 IP address (1 host up) scanned in 0.260 seconds
man nmapすると、
下記が表示されました。
TIMING AND PERFORMANCE:
Options which take are in milliseconds, unless you append ´s´(seconds), ´m´ (minutes), or ´h´ (hours) to the value (e.g. 30m).
-T[0-5]: Set timing template (higher is faster)
私のおすすめ書籍・・・ネットワークセキュリティHacks 第2版 ―プロが使うテクニック & ツール 100+
■ネットワークセキュリティHacks 第2版 ―プロが使うテクニック & ツール 100+
価格:¥3,360(税込)
出版社:オライリー・ジャパン
改定されてますます、中身が濃くなりました。
中級者向けだと思いますが、初心者の人も購入して、できるだけ触れっておけば、かなりレベルアップすると思います。
iptablesを使用したトラフィック量計測も使えそうですね。
P213のNTPに関する内容のところですが、NTPサーバーのリストがあるURLが変わっています。
なので、ここに記しておきます。
NTP Serverのリスト等があるURL
http://support.ntp.org/bin/view/Servers/WebHome#About_the_Public_NTP_Time_Server
Stratum1
http://support.ntp.org/bin/view/Servers/StratumOneTimeServers
Stratum2
http://support.ntp.org/bin/view/Servers/StratumTwoTimeServers
Linuxコマンド・・・普段は使わないが、スクリプトの中では、時々使う tee
大:今日は、teeコマンドをとりあげます。
これも、通常の管理・運用作業では
使ったことはありません。
竹:というよりも、一生使うことはないと思うよ。
大:だそうです。
でも、シェルスクリプトの中では、
時々、見かけるので、とりあげます。
■使い方
例1)
echo "この文を画面表示、かつファイルに書き出します。" | tee -a test.txt
画面表示(標準出力)と
引数で指定したファイルへのコピーを
同時に行います。
なので、ここでは、
画面に下記文が表示され、
「この文を画面表示、かつファイルに書き出します」
同時に、同じ文面がtest.txtに書き込まれました。
例2)
echo "この文を画面表示、かつファイルに書き出します。" | tee -a test.txt test2.txt test3.txt
teeコマンドでは、
引数に指定したファイルすべてに
コピーされます。
この場合、test.txt test2.txt test3.txtの
3つのファイルすべてに同じ内容が
記録されます。
シェルスクリプト実効時、
エラーが発生した場合に、
画面に結果を表示させながら、
ログファイルへも書き出す、という処理で
よく使われます。
-a なしで使用すると、追記ではなく、
上書きとなりますので、注意しましょう。
その他のオプションなど詳しくは、man tee しましょう。
Linuxコマンド・・・1年に1回くらいは使うコマンド tee
竹:今って、treeコマンドで
ファイルの階層構造が見れるように
なってるのかぁー。
ふむふむ。
大:何してるんですか?
荒:もう、皆帰るで。
竹:これなんですけど。
荒:あー、treeコマンドかぁー。
竹:昔は、なかったですよね、確か。
荒:うん。
プロセスの親子がわかる
pstreeは、あったけどねー。
treeコマンドって、
いつの間にか、あったよねー。
Linux World総集編のDVDに、
ディレクトリとかファイルの階層構造を
表示させるシェルスクリプトが、
サンプルで取り上げられてたし。
竹:やっぱり、最近ですよね。
うーん、常に最新情報を
チェックをしておかないと。
どんどん、便利になってる・・。
大:ふーん、最初からあったわけでは
ないんですねぇー。
で、帰りましょう
竹:あ、ブログに残しておきましょう。
$ tree -a
.
|-- .ICEauthority
|-- .Trash
|-- .bash_logout
|-- .bash_profile
|-- .bashrc
|-- .config
| |-- user-dirs.dirs
| `-- user-dirs.locale
(長すぎるので途中省略)|-- .xsession-errors
|-- .zshrc
|-- ダウンロード
|-- テンプレート
|-- デスクトップ
|-- ドキュメント
|-- ビデオ
|-- 公開
|-- 画像
`-- 音楽
64 directories, 72 files
追加です。(2009/2/3)
man treeすると、すぐわかることですが。
-d ディレクトリ指定、と -f は使用する機会が結構あるかもしれません。
(使用例)
$ tree -d /home/hogehoge -f | more
表示省略。指定したディレクトリ配下のディレクトリとファイルが、ツリー構造フルパスで表示されます。
vi シーズン1・・・s
コマンド本などでは、下記の表現で説明されているようです。
・1文字を別の文字列に置き換えます。
カーソルがある1文字が、sを押すと削除され、そこから入力モードになる。
上記で「別の文字列に置き換え」とは、そのことを意味します。
「1文字削除し、そのまま入力できる」という言い方の方が、わかりやすいと思います。
vi シーズン2・・・ZZ
書き込み同時終了。
「上書保存+同時終了」という言い方も可能。
「大文字Z入力」後、再び「大文字Z入力」。
私の場合は、:wq しか使わないです。
ZZは、なんとなく私としては、使いにくいので。
あと、:x を使う人は、今まで見たことないですね。(^^)
vi シーズン3・・・Ctrl+F,Ctrl+B,Ctrl+D,Ctrl+U
Ctrl+F ・・・次の画面
Ctrl+B ・・・前の画面
Ctrl+D ・・・半画面下
Ctrl+U ・・・半画面上
便利ですが、うーーん、あまり使いません。
Ctrlキーを、vi操作中に使うことに、抵抗があるというか、違和感があるというか。
Shiftキーなら、何も気にせず使っていますが。
vi シーズン4・・・ :set all
viに、異常に精通している人なら、これは知っているでしょう。
私は、見ることはありませんね(^^)。
:set nu と :set nonu くらいです。私が使うのは。
viを使ってプログラムを書く人は、下記を使う人はいるかもしれません。
:set ts=4 のように、4に設定している人とか。
(デフォルト8です)
:set list これも、私は、使っている人を見たことないですねぇー。
:set ai は、シェルスクリプトを書く「プログラマー職種」の人なら使うかも。
aiは、autoindentの略です。
いづれも、viを終了すると、setで指定したオプションは、無効になります。
次回以降も使用したい場合は、
自分のホームディレクトリに、.exrc ファイルを作成し、
set number autoindent
などの記述を書いておくと良いでしょう。
※.exrc ファイルに記述せずに、環境変数 EXINIT を使う方法もあります。
export EXINIT="set number autoindent"
.bach_profile に、この1行を書いておけば、ログアウトしても大丈夫です。
vi の本
vi シーズン5・・・:r !コマンド
あまり知られていませんが、知っていると便利です。
:r ! date というような使い方です。
!以降は、コマンドを使えます。パイプも使えますね。
このr !の代わりに、リダイレクトでいいだろうとも思う場合もありますが、
こちらの方は、思いついたら、
すぐそこから使えるので便利です。
vi シーズン6・・・3yw
3yy(あるいは、3Y)なら、3行 ですよね。
3yw で、カーソルがあるところから3単語を取り出せます。
英文コピー・英文設定ファイルを使う時、うまいタイミングで使用できると便利です。
vi シーズン7・・・A と I
・A カーソルがある行末からテキスト入力できます。
・I カーソルがある行頭からテキスト入力できます。
vi シーズン8・・・ :1,10w ファイル名
ファイルの一部を保存したいケースは、結構あるでしょう。
行単位で、別ファイルに保存することができます。
:1,10w ファイル名
これは、1行目から10行目までを、指定したファイル名で保存することができます。
:15,30w sample.txt
こうすると、15行目から30行目までを、sample.txtというファイル名で保存できます。
サーバー設定ファイルなどを、部分的に保存したケースで活用できます。
※コピー&ペーストすることもできますが、これを使いこなせば速い、という場合は多いですよね。
これをスムーズに使っている人は、「なかなかできる人」に見えます。
vi シーズン9・・・ :8,11s/linux/L/g
全置換えを、知らない人は、あまりいないと思います。
(そうでもないですかねぇー)
長く触っていると、何行目から何行目までの「ある文字」を置き換えたいという場合は、良くあると思います。
そんな時、間違えずに、これを使えると便利です。
例1) :8,11s/linux/L/g
8行目から11行目だけ、linux という文字列があれば、L に置き換えろ。
例2) :.,$s/Linux/L/g
これも使いこなせると、便利です。
.(ピリオド)は、カレント行(今、カーソルがある行)。
$は、最後の行。
つまり、「今、カーソルがある行から、最後の行までで、Linux を L に置き換えます。
例3) :%s/Linux/L/g
これは、基礎中の基礎です。すべて置き換えですね。
例4) :.,/Solaris/s/Linux/L/g
これは、覚えなくていいですけど。
カレント行から、次にSolarisという文字が出てくるまでの間の行で、Linux を L に置き換えます。
私の学習書籍・・・viデスクトップリファレンス
■viデスクトップリファレンス
価格:¥840(税込)
出版社:オライリー・ジャパン
価格の安さ、そして、知っていると便利な使い方が出ている、非常に薄型の長く、売れている本です。
vi シーズン10・・・ d1j あるいは、d2j
あぶなくて、使わないだろうコマンドです。(^^)
j は、下方向へカーソルを移動させるコマンドですよね。
d数字j は、今カーソルがある行を削除する+下(数字の分)行を削除する、コマンドです。
d1jならば、今カーソルがある行とその下1行を削除。
d2jならば、今カーソルがある行とその下2行を削除。
ddコマンドを使う方が、安全です。(^^)
vi シーズン11・・・5s
うまく使える人は、使えますが・・・・。
5s は、今カーソルがある文字列を、5文字置き換えます。
5s したら、5文字分消えます。
xを使うより便利ですが、入力ミスとか、数字ミスをして設定ファイルの入力内容を間違えないことですね。
同様の感覚で使えそうなのが、
C(行の終わりまで、他の文字列に変更するため、Cすると、行末までの文字が消えます)
cc・・・・ddがあるので、不要だと思います。
R・・・実際に使うと、「置換」と表示されると思います。
入力していき、ESCキーを押すと、終了します。「文字列上書き」というべきかも。
使っている人はいると思いますが、慣れた人でも使ってない人・知らない人は多いです。
vi シーズン12・・・ +と-
+ ・・・次の行の先頭
- ・・・前の行の先頭
wとe・・・wは、次の単語の先頭。eは、次の単語の末尾。
H・・・画面の先頭行
L・・・画面の最終行。ファイルの末尾という意味で、最終行にとぶ G と違うので注意。
M・・・画面の中央にとびますが、使っている人、見たことないですね。(^^)
これにて、おしまい。
これだけ、使えれば、まあ、言うことないと思います。
vi シーズン13・・・使っている人は、この世にいない気がするが・・・
ここからは、使っている人を見たことがない、今後も見ることはないだろうものです。
複数ファイルを同時にviで開くこともできます。
できるからといって、実際の仕事で、する人はいないと思いますが・・・・。
vi file1.txt file2.txt file3.txt
1つ目のファイルから2つ目のファイルへの切り替えは、
1つ目のファイルを保存してから、
:n エンターキーを叩く、です。
file2.txt へ移ります。
保存せずに次のファイルに移ろうとすると、vi は警告を出しますが、
保存する必要がなければ、:n! で次のファイルへ移動できます。
その場合、再びfile1.txtへ戻ってきても、元の内容は保存されていません。
つまり、最初にfile1.txtを開いた時の状態である、という意味です。
最後のファイル、ここではfile3.txt から再びfile1.txt に戻る時は、
:n は使えません。
:rew エンター叩く、を使う必要があります。
きっと、:e 同様に、使う人はいないでしょう(^^)。
私の学習書籍・・・LinuxWorld メモリアルDVDブック [2001-2007]
■LinuxWorld メモリアルDVDブック [2001-2007]
出版社:アイ・ディ・ジー・ジャパン
価格:¥2,194
かつて、「これだけは最低買うべきである」とオススメしていたLinux Worldです。
去年、残念ながら休刊となりましたが、過去の全67冊がPDFとなり読めるようになってます。
特集記事や連載など、シェルスクリプトも含めて参考になる記事は多いです。
ぜひ、買っておきましょう。
これを最初から最後まで読むだけでも、相当な力がつきます。
LPIC レベル2くらいまでなら、軽く合格できると思うんですが・・・。
私の学習書籍・・・入門UNIXシェルプログラミング ―シェルの基礎から学ぶUNIXの世界
■入門UNIXシェルプログラミング
―シェルの基礎から学ぶUNIXの世界
価格:¥3,360(税込)
出版社:ソフトバンククリエイティブ
不動のベストセラー&ロングセラーです。
Linux Worldと合わせてセット購入すると、最もコストパフォーマンス良く、シェルスクリプトが作成できるでしょう。
今でも、私の手元に置いている本であり、時々調べものに使う時がある本です。
ポケットサイズの本や逆引きシリーズの本には、実務で使えそうなシェルスクリプトが出ていますが、基礎からシェルスクリプトを学ぶ場合のためにも、こういう基本をガッチリ教えてくれるロングセラー本は、1冊持っておくべきです。
学習書籍・・・[改訂第3版] UNIXコマンドポケットリファレンス ビギナー編
■[改訂第3版] UNIXコマンドポケットリファレンス ビギナー編
価格:¥2,079(税込)
出版社:技術評論社
長く売れているロングセラーで、発売から10年目に突入。
技術評論社から届いた、書籍案内を読むと、今回の改訂にあたり、対象OSを
RedHatEnterprise Linux5,FreeBSD6,Solaris10にて、コマンド検証しているので、新入社員の人、あるいは新人への研修担当の人、コマンド本を買い換えようと思っている人は、こちらをオススメします。
コマンドの出力結果(特に日本語)の違いなども、理解できると思います。
Emacs 基礎
Ruby・PHP・Perlを使えるのも当たり前となっている2008年なので、Emacsも使いこなす必要は出てきましたね。
1.Ctrl+x u
アンドゥ
アンドゥをやり過ぎて、逆方向に戻る時に1回使う、Ctrl+g
2.tabキー補完
保存する時に、似たようなファイル名をつける時など。tabキーを使う。
3.Ctrl+x Ctrl+f
ファイルを開く。
4.Ctrl+x Ctrl+v
ファイルの読み込み間違いをしたため、再度別のファイルを開きたい場合
aは、行頭へ移動。eは、行末へ移動。
シェルスクリプト・・・while read 変数 do done(シーズン1)
奥:シェルスクリプトの中では、
定番中の定番です。
変数を読み込ませて、
順番に繰り返し処理を行う、というのは
よくあります。
繰り返しファイルに書き出すとか、
繰り返し、色々な宛先にメール送信するとか。
で、今からやろうと思ったんだけど、
お昼だから、お昼ごはんの後にしましょう。
大:はい。
お腹空きましたし・・・・。
つづきは、PM2時頃・・・・・。
大:では、続きです。
奥:テンプレートを作り、
そこに色々、自分で好きなように
スクリプトを作っていきましょう。
大:はい。
奥:「実用的」とうたってスクリプトを
掲載している書籍も一杯あるし、
もっと色々サンプルを見たい人は、
そういう書籍や雑誌を買ってもらえば、
いいでしょう。
コストパフォーマンスを求めるなら、
下記のLinux World DVDが1番です。
2003年12月号や2005年1月号など
過去のスクリプト特集がたくさんあります。
大:えーーっと、これがテンプレートですね。
ファイル名:while_read_do_done.sh
●内容
#!/bin/bash
cat list.txt | while read list
do
echo "$list さんは帰りました。"
done
●list.txt・・ユーザーアカウントが1行に1つあり。
takeuchi
okuda
oosaki
奥:list.txtというファイルを読み込みます。
1行ずつ変数に読み込んだ内容を
今度は、echo行で出力するだけの内容です。
まず、実行してみましょうか。
大:はい。
最初に、実行可能な権限を設定する、と。
chmod 774 while_read_do_done.sh
次に、実行します。
$ ./while_read_do_done.sh
■出力結果
takeuchi
okuda
oosaki
奥:1行ずつ読み込んだ内容を
1行ずつ出力しているだけなんですけどね。
大:はい。
奥:catでファイルを読み取って
パイプで、while read 変数に
「入力」として渡すというのが
定番ですね。
大:はい。
奥:listというのは、変数名なので、
別に何でもいいのよ。
oosakiに変更してもいいし、
変更したら、echo $oosakiに
変更することも忘れないように。
大:は<い。
変更してみます。
●変更後
#!/bin/bash
cat list.txt | while read oosaki
do
echo $oosaki
done
■出力結果・・先ほど同様
takeuchi
okuda
oosaki
大:なるほど。
変数名なので、何でもいいと。
でも、わかりやすい変数名をつける、かぁー。
よく、わかりました。
奥:では、ちょっと改良しましょう。
シーズン5くらいまで、やればいいかな。
シェルスクリプト・・・while read 変数 do done(シーズン2)
たまーに使うコマンド・・・usermod
ほとんど1年に1回あるか、ないかという使用頻度のコマンドです。
usermodに関しては、結構使うケースはあると思いますが、そのオプションである、-d や -m を使ってみましょう。
(例)
大崎さんの oosaki というアカウントで、ホームディレクトを/home/oosaki をやめて、/home/osac に変更してもらうことになりました。
その場合、/home/oosakiで使っていたファイルは、/home/osacで継続して使いたいという時に、使うコマンドです。
usermod -d /home/osac -m oosaki
ユーザー作成時にできたホームディレクトリを変更したい場合。
-dを使って新規ディレクトリが作成されますが、今まで使っていたホームディレクトリ(/home/oosaki)に、ファイルがあると、そのまま使いたいのが普通です。
新規に作成するディレクトリ(/home/osac)にも、ファイルを移動させたい場合に使います。
(その他の例)
usermod -l osac -d /home/osac -m -g osac oosaki
※アカウント osac が存在すること、/home/osac の所有グループがoosakiのままであることなど注意!
私のおすすめ書籍・・・
たまーに使うコマンド・・・rpm --rebuild ~.src.rpm
最近は、yum でほとんど済ましてしまいますが、たまには使う rpmコマンド。
私の学習書籍・・・情報システム部に所属しているなら、セキュリティ本として机に置いておくべき本
■ペネトレーションテスト入門
情報システムセキュリティの実践的監査手法
価格:¥3,675(税込)
出版社:ソフトバンククリエイティブ
「ペネトレーションテスト」「セキュリティチェック」「脆弱性チェック」などを行っている企業は多いですが、結果を公表する企業は、ほとんどありません。
ゆえに、この本は、貴重です。
これからセキュリティ診断を行う企業、既に行った企業ともに、
依頼したベンダーの質や、他社はどこを点検しているのか、どのような資料をまとめるべきか、など具体的な事例を知ることができます。
なかなか得ることができない類の情報ゆえに、貴重な書籍です。
Emacs 中級1・・・
Emacs 中級2・・・
Emacs 中級3・・・
Emacs 中級4・・・
ncコマンド(1)・・・
# echo "ehlo localhost" | nc 0 25
220 localhost.localdomain ESMTP Sendmail 8.13.8/8.13.8; Mon, 2 Feb 2009 20:57:58 +0900
250-localhost.localdomain Hello localhost.localdomain [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
[root@localhost ~]# echo "quit" | nc 0 25
220 localhost.localdomain ESMTP Sendmail 8.13.8/8.13.8; Mon, 2 Feb 2009 20:58:09 +0900
221 2.0.0 localhost.localdomain closing connection
上記は、sendmailを起動させているサーバーなので、25番ポートからの応答が返ってくる場合です。
今月の日経Linux(2009/2)では、ncコマンドを使って、オプションの-vを使うことで、20番ポートから30番ポートまでの複数ポートの一括スキャンを行うという例がとりあげられています。
下記参照。
ncコマンド(2)・・・-vオプション
# echo "quit" | nc -v 0 20-30
nc: connect to 0 port 20 (tcp) failed: Connection refused
nc: connect to 0 port 21 (tcp) failed: Connection refused
Connection to 0 22 port [tcp/ssh] succeeded!
SSH-2.0-OpenSSH_4.3
Protocol mismatch.
nc: connect to 0 port 23 (tcp) failed: Connection refused
nc: connect to 0 port 24 (tcp) failed: Connection refused
Connection to 0 25 port [tcp/smtp] succeeded!
220 localhost.localdomain ESMTP Sendmail 8.13.8/8.13.8; Mon, 2 Feb 2009 21:04:36 +0900
nc: connect to 0 port 26 (tcp) failed: Connection refused
nc: connect to 0 port 27 (tcp) failed: Connection refused
nc: connect to 0 port 28 (tcp) failed: Connection refused
nc: connect to 0 port 29 (tcp) failed: Connection refused
nc: connect to 0 port 30 (tcp) failed: Connection refused
■参考
ブログ「Linuxコマンドとviとシェルスクリプトを家で覚えよう!」http://linuxcommand2007.seesaa.net/ 2月1日
ncコマンド(3)・・・
受信側:# nc -l 12345
12345番ポートで、Listenして、待っています。
送信側:# nc -w 3 localhost 12345
-wなしでも、いいのですが、-wがあると読み書きがない場合、3秒でタイムアウトします。
3秒経過する前に、送信側で文字列を入力すると、受信側に同じ文字が表示されます。
3秒放置すると、送受信側両方のプロセスが、終了します。
パケットキャプチャーを行うと、送信側は、「push+ackで、data領域に文字列を入れて」送信を行っている。
受信側は、ackを返しているのが理解できると思います。
ncコマンド(4)・・・
bonding・・・結合ドライバ(カーネルモジュール)設定
1.結合ドライバモジュールのロード
■/etc/modprobe.conf
alias bond0 bonding
2.結合インターフェース設定
■/etc/sysconfig/network-scripts/ifcfg-bond0
DEVIDE=bond0
(以下省略)
3.bondingの物理インターフェース(スレーブインターフェース)設定
■/etc/sysconfig/network-scripts/ifcfg-eth0とifcfg-eth1
MASTER=bond0
SLAVE=yes
4.bonding設定反映
■/etc/init.d/network restart
※SuSEではOS再起動必要。他のLinuxも再起動した方が良い。
特に、mode変更などした場合。
5.bonding設定確認
ifconfig
bond0,eth0,eth1が表示されることを確認。
※もう1つ重要なことだが、IPアドレスとMACアドレスの表示にも注意。
※OSによりIPアドレスが表示されない可能性あり。
※MACアドレスが各々異なっている場合、設定に問題がある可能性もあり。
※routeコマンドでルーティングも確認しておく。
cat /proc/net/bonding/bond0
slaveインターフェースの名前やBonding Modeがわかる。
bonding・・・パラメーター
■/etc/modprobe.conf
alias bond0 bonding
options bond0 miimon=100 mode=active-backup
変更した場合は、次の手順で有効になる。(OSにより、OS再起動が必要なものもある)
/etc/init.d/network stop
rmmod bonding
/etc/init.d/network start
bonding・・・ethtool ネットワークインターフェースの状態確認
注意:全てのドライバが状態管理をサポートしているとは限らない。(今でも)
# ethtool eth0
Settings for eth0:
Current message level: 0x00000007 (7)
Link detected: yes <--ここ重要
※ちなみに、これはVMware仮想マシン(Fedora 8)のインターフェースeth0です。
これは、あんまり役立ちませんね。auto-negotiationとか出てないし。
ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:E2:6A:49
(途中省略)
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
LANケーブルを抜いても、RUNNINGになっているデバイスでは、正しいリンク状態を認識できない。
bonding・・・MII監視モード
注意:MII監視モードでは、結合ドライバでbondingするすべてのネットワークインターフェースは、状態管理をサポートしている必要がある。
■/etc/modprobe.conf
alias bond0 bonding
options bond0 miimon=100 mode=active-backup primary=eth0
mode=active-backup。デフォルトは、balance-rr。日経SYSTEMSなどでもとり上げられるトラブルの元ですが、なぜ標準?
miimon=100 <--100ms以上で指定。Active-Backupの場合、必須。
primary=eth0 <--省略可能。全インターフェースがUPしている時、どのインターフェースを優先するか指定する。省略時はbondingドライバが自動で割り振る。
updelay <--使わないだろう。インターフェースが有効になるまでの時間がかかるスイッチポート用。
downdelay <--使わないだろう。
私の学習書籍・・・Linuxアドバンストネットワークサーバ構築ガイド HAサーバ構築編
■Linuxアドバンストネットワークサーバ構築ガイド HAサーバ構築編
価格:¥3,675(税込)
出版社:秀和システム
Amazonのレビューでも評価が高い本ですが、初心者のみならず、経験者でも活用できる箇所が多いです。
特に、bonding関連の設定が書かれている本は、これくらいだし、keepalivedによる監視、heartbeatによるサービス監視、その他、スイッチなどについても関連付けて書かれている書籍は、これくらいしかありません。
なので、設計・構築とかやっている人は、手元に1冊置いておくべきでしょう。きっと。
ここまで書いてくれていたら、相当役に立ちますよ。
実務で使っている設定・構成図などをそのまま(あるいは修正して)掲載してくれてますので、見やすくわかりやすいです。
いまだに、十分、オススメできる1冊です。
私の学習書籍・・・Linuxデバイスドライバ 第3版
Linuxデバイスドライバ 第3版
出版社:オライリージャパン
価格:¥5,775(税込)
「OS自作入門」と一緒に買った本です。
現在、学習中です。
私の学習書籍・・・Linuxデバイスドライバプログラミング
Linuxデバイスドライバプログラミング
出版社:ソフトバンククリエイティブ
価格:¥4,725(税込)
4-1から、動的なデバイスドライバの作成が始まり、helloを出力するデバイスドライバからスタートして、簡単で面白いです。
私の学習書籍・・・Linuxアドバンストネットワークサーバ構築ガイド HAサーバ構築編
■Linuxアドバンストネットワークサーバ構築ガイド HAサーバ構築編
価格:¥3,675(税込)
出版社:秀和システム
Amazonのレビューでも評価が高い本ですが、初心者のみならず、経験者でも活用できる箇所が多いです。
特に、bonding関連の設定が書かれている本は、これくらいだし、keepalivedによる監視、heartbeatによるサービス監視、その他、スイッチなどについても関連付けて書かれている書籍は、これくらいしかありません。
なので、設計・構築とかやっている人は、手元に1冊置いておくべきでしょう。きっと。
ここまで書いてくれていたら、相当役に立ちますよ。
実務で使っている設定・構成図などをそのまま(あるいは修正して)掲載してくれてますので、見やすくわかりやすいです。
いまだに、十分、オススメできる1冊です。
bondingとスイッチ冗長化に関して、ある程度のレベル以上で記述している本は、これくらいです。
※あと、Google本に少々記述があるくらいですよね。

