Plesk用CLIハーベスター



この記事では、PleskホスティングコントロールパネルとCLIインターフェースに焦点を当てますが、この情報は、便利​​なCLIアプリケーションを作成する一般的な用語で役立つ場合があります。



Pleskホスティングコントロールパネルの管理中、Webインターフェースにもかかわらず、私はまだコンソールでかなりの時間を費やしていることがわかりました。 最後に、vasya.comドメイン内のファイルの権利を確認する場合は、ファイルマネージャーに移動します。 バトルサーバーの負荷が高い場合、Webインターフェイスではなくコンソールから見たいものもあります。



一方では、Unix / Linuxシステムを定期的に管理する場合、オートコンライト、エイリアスの使用に慣れ、小さなルーチンタスクのbashスクリプトの作成を開始します。 一方、Pleskを見ると、PleskにはかなりリッチなCLIインターフェースがあり、これはすべてのコントロールパネルにはありません。 しかし、奇妙なことは、控えめに言ってそれを使用することはあまり便利ではなく、多くの典型的な管理タスクにとっては一般に役に立たないことです。



何らかの形で状況に影響を与え、CLIでいくつかの改善を行うという要望は、長い間熟成されてきました。 コンソールで半分の時間を費やして、次のコマンドを入力します。 これらのコマンドをよく見ると、これらの同じコマンドが他のPlesk管理者によって履歴ファイルにあることがわかります。 そして、チームは非常に冗長です。



# mysql -uadmin -p`cat /etc/psa/.psa.shadow` psa # /usr/local/psa/bin/domain ... # /usr/local/psa/bin/sw-engine-pleskrun /usr/local... # tail -f /var/log/sw-cp-server/error_log ...
      
      





前述のポイントは、何かを変えようとする動機でした。 その上、この決定は今年の初めにRubyでコマンドラインアプリケーションを作成することについて出会った本に影響を受けました(Habréで既に何らかの形で宣伝されていました)。 ちなみに、私はそこに水の量が最小限であるという事実があり、基本的には優れたコンソールアプリケーションを作成する方法の例がありました。 私は多くを学んだとは言いませんが、本は知識を体系化し、物事を整理し、この知識を適用する追加のインセンティブとして機能します。



最後の動機付けの要因は、日々の仕事に役立つツールを作りたかったことです。



そのため、CLIでの頻繁な操作の実装を簡素化するために設計された、「 plesk



」という非常にplesk



名前のコンソールユーティリティがありました。 このユーティリティは、Plesk 11.5に標準装備されています。



しかし、理論に少し戻って。 Unix / Linuxユーティリティを見ると、それらを条件付きで単純なコマンドとコマンドスイートの2つのクラスに分けることができます。 オプションの数が合理的な制限を超え始め、ツールキットを個別の領域に分割できる場合、その時点でコマンドスイートを形成する必要があります。 単純なコマンドの例はls



(多くのオプションがありますが、コマンドは1つです)、コマンドスイートの例はgit



またはsvn



(多くのサブコマンドがあります)です。



Pleskのコンテキストでは、問題の1つは次のとおりでした。 ディレクトリ/usr/local/psa/bin/



には、100を超えるさまざまなユーティリティが含まれています。 接頭辞/usr/local/psa/bin/



毎回入力したくありません。 「 cd /usr/local/psa/bin/



」を実行する-も。 /usr/local/psa/bin/



psa /usr/local/psa/bin/



をPATHに詰め込むことは、PATHが混oticとし、それが標準ユーティリティであるかPleskのユーティリティであるかを理解することができないため、さらに魅力的ではありません。 次の週末に古いCLIインターフェイスを破棄し、まったく新しいインターフェイスを作成することは、時間と後方互換性の両方の面で理想的です。 この問題に対する論理的な答えは、標準インターフェイス上でコマンドスイートラッパーを作成することです。 ユーティリティ/usr/local/psa/bin/domain



は、「 plesk bin domain



」と呼ばれplesk bin domain



。 pleskユーティリティのサブコマンドとbinから利用可能なユーティリティの名前を覚えないために、bash補完を追加します。 さらに便利にするために、binからユーティリティ自体のコマンド/オプションにbash補完を追加します。



以前は、コンソールからクライアントを作成するために、このようなことをしました。 ヘルプコールを行い、オプションを確認しました。 大体の場合、おおよその名前を覚えて、私が望むものを理解しますが、特定のオプションの正確なスペルは理解しません。



 # /usr/local/psa/bin/client -h Usage: client command <login_name> .. Available commands: --create or -c <login_name> Creates a new customer account..
      
      





その後、必要なコマンドを入力しました(すべてのオプションがすぐに記憶されるわけではないため、ヘルプ情報に戻る途中で戻ります)。



 # /usr/local/psa/bin/client --create ...
      
      





これの代わりに、もっと頻繁にタブをクリックしてください;)



 # plesk bin cl<TAB> client client_pref cloning # plesk bin client --create<TAB> --create --create-gapps-account
      
      





彼らが言うように、超自然的なものは何もありませんが、私は今、ヘルプを見ずにチームをダイヤルしてクライアントを作成することができます。



次の側面は、頻繁に入力されるが長いチームのショートカットです。



かなり長いコマンドを入力してコンソールMySQLクライアントにアクセスする代わりに:



 # mysql -uadmin -p`cat /etc/psa/.psa.shadow` psa
      
      





次のように入力します:



 # plesk db
      
      





マシン上でPleskのバージョンを調べることが必要になる場合があります。 マシンのアーキテクチャ。 ディストリビューションの名前。 はい。マイクロバージョンがインストールされていれば、見つけ出すのに害はありません。 これを行うには、多くのコマンドを入力する必要があります。



 # cat /etc/issue CentOS release 5.9 (Final).. # cat /usr/local/psa/version 11.5.22 CentOS 5 115130325.19 # cat /usr/local/psa/.revision 319415 # uname -a Linux hp-demo... # cat /root/.autoinstaller/microupdates.xml ...
      
      





次に、1つの小さなコマンドを入力して、すべての情報を一度に取得します。



 # plesk version Product version: 11.5.30 Update #6 Update date: 2013/07/19 07:42 Build date: 2013/07/11 12:00 Build target: Debian 6.0 Revision: 323071 Architecture: 32-bit Wrapper version: 1.0
      
      





しかし、簡単なショートカットは少ないので、先に進みましょう。 テーブルの内容を見たいとしましょう。 ダイヤルするだけ:



 # plesk db show misc +-------------------------------------+----------------------------------------------------------------+ | param | val | +-------------------------------------+----------------------------------------------------------------+ | FullHostName | unknown | | actionlog_rot_num_periods | 30 | ...
      
      





出力が画面サイズを超える場合、ページングが使用されます。 svn log



git log



を使用した人は、違いが何であるかを理解するでしょう。 この動作は、たとえば、コマンド「| less --quit-if-one-screen --no-init」を使用して実現できます。



パネルにはさまざまな構成ファイルがあります。 また、編集用に開くことを簡素化することもできます。



 # plesk conf panel.ini
      
      





そして、すでにVimにいて、変更を加えることができます。 これは通常のproc_openを使用して実現されます。



tail



コマンドが複数のファイルを一度に監視できることを知っている人はほとんどいません。 この機能を使用して、パネルが書き込むすべてのログファイルを同時に監視するチームが作成されました。



 # plesk log --all Log files: /usr/local/psa/var/log/maillog /var/log/sw-cp-server/.. ==> /usr/local/psa/var/log/maillog <== Jul 22 17:25:43 ay postfix/anvil[25376]: statistics: max connection count 1 for (smtp:1.164.98.84) at Jul 22 17:22:21 .. ==> /var/log/sw-cp-server/error_log <== ==> /usr/local/psa/admin/logs/httpsd_access_log <== ...
      
      





古い問題を新たに見ると、興味深い結果が得られます。 370行のラッパーコードでは、特定のポイントを簡素化するための取り組みに非常に多くのアイデアが当てはまります。



もう1つの重要なものはドキュメントです。



パラメータなしでユーティリティを呼び出すと、簡単なヘルプが発行されます。 ただし、ヘルプは「 Usage: command [options]



」であってはなりません(Pleskの通常のユーティリティの一部はこれに苦しんでいます)。 それでも、少しの詳細、つまりオプションのリスト、サブコマンドのリスト(存在する場合)は害になりません。 コマンドスイートの場合、ヘルプサブコマンドとコマンドヘルプサブコマンドを実行する機能が必要です。 実際、これは、情報をフィルタリングする機能を備えたマニュアルに代わるものです。 そしてもちろん、真のUnixユーティリティにはmanページが必要です。 はい、今では「 man plesk



」と入力できます:)一般に、ユーザーがユーティリティの複雑さを研究し、使用例、オプションの組み合わせなどの追加情報を取得できるのは、mansのおかげです。 独自のコマンドスイートを作成する場合は、使用法、ヘルプサブコマンド、およびマニュアルページを忘れないでください。 ヘルプを書くことはプログラマーの嫌いの1つですが。



plesk



ユーティリティに戻ります。 誰でもその開発に参加する機会があります。 Pleskは非常に小さな開発チームによって開発されています。 一方、Pleskを使用する管理者は数桁大きくなります。 このユーティリティは主に管理者向けのCLIでの生活を簡素化するために設計されているため、オープンソースコードが付属し、ミラーリポジトリはGitHub-github.com/sibprogrammer/plesk-ctlにあります。これを実装できます。つまり、この機能がアップストリームにある可能性があります。 依存関係を最小限に抑えるために、ユーティリティはPHPで作成されました。これは、パネルのWebインターフェイスを操作するために使用される言語です(ただし、私はRubyとJSの熱心なサポーターです:))。 一方、PHPは非常に人気があるため、この言語を選択してもユーティリティの開発にしか貢献できません。



PS視覚の愛好家向け-SlideShareでのプレゼンテーション










All Articles