0コメント

【シェルスクリプト】ちょっと真面目にサーバー用のスクリプト書きなおす。つもりだった。 #1

起動スクリプト

停止スクリプト

再起動スクリプト

とまあ、このスクリプトで「一応動く」からそんまま使ってきたが、流石にちゃんと書き直したほうがいいだろう。と思って再度書き直すことにした。

〇きっかけ
 脆弱性「CVE-2021-44228log4j2と呼ばれるJavaのログ出力ライブラリにてリモートでの任意コード実行の危険性があることが発見され、これが著名ゲームにも影響するとして多くのサーバーで一時緊急停止を実施せざるを得ない深刻な状況となった。

 で。何が関係あるのかというと、これに対する対策が「新バージョンのソフトに更新する」という事だ。私の場合はSpigotとTuinityを使っているのだが、一応起動スクリプトに、サーバーソフトウェアの最新ビルドを確認して更新するという機能を盛り込んではいるのだが、これが使い勝手が悪い。

・手動でrestart.shを実行して対話式で更新するかを確認しなければならない。
 →ビルドを監視してもっと効率よくできないか?自動でバックアップを取得してからアップデートできないか?
・滅多に起動するサーバーを増やしたりするわけじゃないが、スクリプト内にパスを入力するのは・・・
 →あらかじめ設定ファイルを用意してそれを読み込むように出来ないか?
・通知が微妙に見にくい
 →適当な英語使ったから単純に見にくいし、コンソールに出力しているのでこれログファイルとして残せないだろうか?

 今ならもう少しマシなスクリプト駆けるんじゃないだろうか?ということで書きなおそうと至ったわけだ。

〇ちょっと考えた点
 これだと、全てのサーバーと稼働させるか、停止させるかしか出来ない気がしたが、設定ファイルで起動するか否かを設定しておけばいいか。ということでとりあえず書いていこうかな!!!!!!!!

と、思った。しかし、・・・

〇普通に挫折した。
 ここまでこの記事のタイトルは「【シェルスクリプト】ちょっと真面目にサーバー用のスクリプト書きなおす。」だった。そこで現在のタイトルを見ていただこう。ちなみに気が変わったきっかけなのはこれだ↓

 ・・・いや、正規表現でiniファイルを読み込むだとか、いや設定ファイルでini使わずともtextでもいいのかもしれないが、ライブラリも何もないシェルスクリプトでやれと言われたら、気が遠くなった。今まで感じたことないくらい気が遠くなった。
 もちろんシェルコマンドを扱えるようになることも必要なことではあるのだろうが、オプションの暗記、正規表現、PythonやJavaといったプログラミング言語とかけ離れ過ぎた記述方法(※あくまで個人の意見)。学ぶにもしんどくなってきた。

 awkとかsedとかgrepとかcatとかとかとか、名前からしてどういう動作をするのかよく分からない上にオプションも一文字で全く分からないので毎回調べながら記述している。これ、やりながらなれるというよりマジで暗記でもしたほうがよっぽど使えるようになりそうな気がする。パイプなんてものもあるし。

 じゃあどうするか。今回は、別言語で記述してみようかと。そんで、Pythonのsubsystemライブラリを使って記述していく方法も考えたが、
ちょっと気になったのが、Ruby。なんか、若干記述がシェルスクリプトに似ている気がしたっていうのもあるんだけど、それでいて日本人が作った言語だから学びやすいらしい。


サーバーはどうせ、jarファイルを実行して起動させれば開発はできるので、どうやって実装するかはゆっくり考えることにする。今回は導入編って感じ
0

この記事へのコメント