サーバ管理者のためのプログラミング入門(シェルプログラミング基礎1) [サーバ管理者のプログラミング]
個人的な信条として、「rootのパスワードを握る者はせめてC言語でUNIX/Linuxシステムコールプログラミングの基礎知識ぐらい持ってろ」というものがあるのだけども、実際の問題としてプログラミングの知識も経験もほとんど無いサーバ管理者というものが増えつつあり、しかもその数が決して少なくないみたいなんだな。
やれやれ…
が、そんなサーバ管理者であっても、時としてプログラミングを強要されるシーンが無いとも限らず、たとえば同じような処理を沢山のサーバで延々と実行しなきゃならないケースなど、手でいちいちコマンド入力していたら面倒くさいし、それだけヒューマンエラーの発生しうる余地が増えるとあって、せめてシェルスクリプトくらいは書けるようになっておかないと…と思うこともあるようだ。
#「あるようだ」と書いているのは、私にはプログラミングの知識も経験もあるので
#そんな場合にはとっととスクリプトを書いてしまうからそんな苦労に遭遇しないの
#である…
経験の浅いサーバ管理者で、「さあ!シェルプログラミングを!」と迫られるとしり込みしてしまう傾向にあるようだが、プログラミングというものを難しく考えているというのがそもそもの原因であるように思う。
そんな若いサーバ管理者諸君に問う!
プログラミングとはなんぞや!?
それは…
実行したいコマンドを 実行したい順番に書き並べただけの サーバ向けの作業手順書に過ぎない!
…と、割り切ってしまえばそんなに難しい話ではない。(笑)
やれ、オブジェクト指向がどうとか、構造化プログラミングがどうとか、アルゴリズムがどうとか、ロジックがどうとか、そんなことを気にする必要は全く無い!どうせサーバ管理者はプログラムを売って食っていく職業ではないので、アプリケーション開発者が吐き気を催すような、アレなプログラムを書いたところで一向に構わないのである!
たとえば。
『サーバA、サーバB、サーバC…サーバZの26台のサーバに、今からyum updateを実行したい。』
という処理を実行すると仮定する。そして、それは1~2ヶ月に1度実行する必要がある処理だとする。
毎月毎月、君は26台のサーバにログインして yum update を実行しなければならないとしたらうんざりしないか?
「26台くらいなら別に…」 と、KYな反応をするそこの君!26台が50台だったら…200台だったら…それでも君は同じKYな反応をするかね?(笑)
こんな場合に、せめてシェルプログラミングが出来れば、1回だけ苦労しておけばあとはコマンド一発で済むのだよ?そしてその初回の1回だけ、完全に動作することを確認できれば、ほとんどの場合2回目以降も完全に動作することが約束されるのである。
では、知識も経験も技術もへったくれも無い、サーバ管理者が最初に書くであろうシェルプログラミングの成果物はどのようなものになるだろうか…
おそらく、以下のようなものになるだろう!
こんなシェルスクリプトを書いたって、それは君にとって立派なシェルプログラミングであり、この成果物は来月からは君の作業を大いにラクチンにしてくれることだろう。
熟練したプログラマが見れば、このシェルスクリプトには「ツッコミどころが満載」であるし、決して「美しい」とはいえない。しかしこのシェルスクリプトでも君の欲している目的を十分に満たすことが出来れば、技術がどうとかいうことは気にする必要が無い。
【技術はあとから身についてくる】
だから、プログラミング経験の全く無いサーバ管理者の諸君も、今はそんなこと全く気にしなくても良い。
やれやれ…
が、そんなサーバ管理者であっても、時としてプログラミングを強要されるシーンが無いとも限らず、たとえば同じような処理を沢山のサーバで延々と実行しなきゃならないケースなど、手でいちいちコマンド入力していたら面倒くさいし、それだけヒューマンエラーの発生しうる余地が増えるとあって、せめてシェルスクリプトくらいは書けるようになっておかないと…と思うこともあるようだ。
#「あるようだ」と書いているのは、私にはプログラミングの知識も経験もあるので
#そんな場合にはとっととスクリプトを書いてしまうからそんな苦労に遭遇しないの
#である…
経験の浅いサーバ管理者で、「さあ!シェルプログラミングを!」と迫られるとしり込みしてしまう傾向にあるようだが、プログラミングというものを難しく考えているというのがそもそもの原因であるように思う。
そんな若いサーバ管理者諸君に問う!
プログラミングとはなんぞや!?
それは…
実行したいコマンドを 実行したい順番に書き並べただけの サーバ向けの作業手順書に過ぎない!
…と、割り切ってしまえばそんなに難しい話ではない。(笑)
やれ、オブジェクト指向がどうとか、構造化プログラミングがどうとか、アルゴリズムがどうとか、ロジックがどうとか、そんなことを気にする必要は全く無い!どうせサーバ管理者はプログラムを売って食っていく職業ではないので、アプリケーション開発者が吐き気を催すような、アレなプログラムを書いたところで一向に構わないのである!
たとえば。
『サーバA、サーバB、サーバC…サーバZの26台のサーバに、今からyum updateを実行したい。』
という処理を実行すると仮定する。そして、それは1~2ヶ月に1度実行する必要がある処理だとする。
毎月毎月、君は26台のサーバにログインして yum update を実行しなければならないとしたらうんざりしないか?
「26台くらいなら別に…」 と、KYな反応をするそこの君!26台が50台だったら…200台だったら…それでも君は同じKYな反応をするかね?(笑)
こんな場合に、せめてシェルプログラミングが出来れば、1回だけ苦労しておけばあとはコマンド一発で済むのだよ?そしてその初回の1回だけ、完全に動作することを確認できれば、ほとんどの場合2回目以降も完全に動作することが約束されるのである。
では、知識も経験も技術もへったくれも無い、サーバ管理者が最初に書くであろうシェルプログラミングの成果物はどのようなものになるだろうか…
おそらく、以下のようなものになるだろう!
#!/bin/bash ssh serverA yum -y update ssh serverB yum -y update ssh serverC yum -y update ssh serverD yum -y update ssh serverE yum -y update ssh serverF yum -y update ssh serverG yum -y update ssh serverH yum -y update ssh serverI yum -y update ssh serverJ yum -y update ssh serverK yum -y update ssh serverL yum -y update ssh serverM yum -y update ssh serverN yum -y update ssh serverO yum -y update ssh serverP yum -y update ssh serverQ yum -y update ssh serverR yum -y update ssh serverS yum -y update ssh serverT yum -y update ssh serverU yum -y update ssh serverV yum -y update ssh serverW yum -y update ssh serverX yum -y update ssh serverY yum -y update ssh serverZ yum -y update
こんなシェルスクリプトを書いたって、それは君にとって立派なシェルプログラミングであり、この成果物は来月からは君の作業を大いにラクチンにしてくれることだろう。
熟練したプログラマが見れば、このシェルスクリプトには「ツッコミどころが満載」であるし、決して「美しい」とはいえない。しかしこのシェルスクリプトでも君の欲している目的を十分に満たすことが出来れば、技術がどうとかいうことは気にする必要が無い。
【技術はあとから身についてくる】
だから、プログラミング経験の全く無いサーバ管理者の諸君も、今はそんなこと全く気にしなくても良い。
コメント 0