Sparrowツールを使用したラッパースクリプトの開発

一日の良い時間! この投稿では、 Sparrowツールを使用して、既存のスクリプトとユーティリティの独自のラッパーを簡単かつ簡単に作成する方法と、それが必要になる理由を説明します。







多くの場合、さまざまなタスクやさまざまなサーバーで実行する必要のあるさまざまなスクリプトを扱います。 これらのスクリプトは、自分で作成するか、ソフトウェアパッケージの一部としてインストールできます。 何らかの方法で、多くの場合、タスクは一連のパラメーターを使用して特定のスクリプトを実行するだけで済むという事実になります。







script <arguments>
      
      





ここでの主な難点は、スクリプトへの引数が非常に重く、複雑になる可能性があり、同時に、タスクのコンテキストに応じて、それらも異なる可能性があることです。 これにより多くの不便が生じますが、もちろんそれほど重大ではありませんが、それでも言及したいと思います。









そのため、ここでは、特定のスクリプトの入力パラメーターを準備するロジックに関連するすべてをカプセル化し、これらのパラメーターを使用してこのスクリプトを実行するラッパースクリプトが役立ちます。







独自のラッパースクリプトを記述する代わりに、Sparrowツールを使用できます。Sparrowツールを使用すると、どのように簡単かつ簡単に実行できるかを示します。







スズメのインストール



SparrowはCPANモジュールなので、それに応じて配置します。







 $ cpanm Sparrow
      
      





ラッパーを作成するスクリプトを選択する



これはトレーニング記事であるため、純粋に教育目的のために、実際にはスクリプトを選択します。これは、仕事で使用する1つまたは複数のスクリプトになります。 それをローカルホスト上のインターネットの速度をテストするために設計されたspeedtest-cliユーティリティとします。 ドキュメントから判断すると、スクリプトにはコマンドライン引数で指定された十分に多くの設定があります。これはまさにラッパーが適切な場合です。 このスクリプトを王冠で実行し、一定期間のインターネットの可用性を分析するレポートを送信したいと想像してください。 仮定します。 スクリプトを呼び出すための2つのオプションが重要です。







 speedtest-cli --no-download #    
      
      





そして







 speedtest-cli --no-upload #    
      
      





そして、どちらの場合も常にオプションを追加したい







 --bytes #      ,    
      
      





また、最初のケースで、http要求を待機するタイムアウトを指定するとします。







 --timeout 10 # http -
      
      





それでは、異なるパラメーターを使用してspeedtest-cliスクリプトを2回実行します。







Sparrowプラグインとしてラッパースクリプトを記述する



スクリプト履歴を作成します。







 $ nano story.bash speedtest-cli $(args_cli)
      
      





この場合、すべての作業はSparrow bashで事前定義されたargs_cli関数によって行われ、すべての入力パラメーターがspeedtest-cliスクリプト入力に透過的に渡されます。







ローダーユーティリティspeedtest-cliを定義します。 Sparrowはスクリプトの依存関係を追加し、Pythonなどのさまざまなプログラミング言語用に定義された多数のパッケージマネージャーをサポートできます。 speedtest-cliユーティリティはpipモジュールとしてインストールされるため、pipインストーラースタイルで依存関係ファイルを定義するだけです。







 $ nano requirements.txt speedtest-cli==1.0.6
      
      





さて、先に進みましょう。プラグインのメタデータを含むファイルを特定し、実際 Sparrowプラグインリポジトリにアップロードします







 $ nano sparrow.json { "name" : "speedtest-cli", "description" : "Simple wrapper for speedtest-cli from https://github.com/sivel/speedtest-cli", "version" : "0.0.1", "url" : "https://github.com/melezhik/sparrow-plugins/tree/master/speedtest-cli", "category": "utilities", "python_version" : 2, "sparrow_version": "0.2.45" }
      
      





Sparrowプラグインのメタデータファイルの形式は、Sparrowのドキュメントで詳細に説明されています。ここでは分析しません。ラッパーを提供するスクリプトと同様にプラグインが呼び出されることだけが重要です。







これで、プラグインをリポジトリにアップロードする準備ができました。







  $ sparrow plg upload #       
      
      





折り返しスクリプトを実行するためのSparrowタスクの構成



ここから楽しみが始まります。 これは、作成したプラグインを使用して、前述のspeedtest-cliユーティリティを実行する方法です。







このユーティリティを別のサーバーで実行するとします。 最初に適切なSparrowプラグインをインストールする必要があると推測することは難しくありません。







 $ sparrow plg install speedtest-cli
      
      





すべてがうまくいけば、Sparrowプラグインがインストールされ、実際のspeedtest-cliユーティリティ自体と、すべてのPython依存関係が取得されます。







プラグインが機能することを簡単に確認しましょう:







  $ sparrow plg run speedtest-cli -- --help
      
      





すべてが順調であれば、speedtest-cliユーティリティからヘルプが得られます。







起動したプラグインを特定のパラメーターに接続するには 、タスクを作成します。 異なる引数でspeedtest-cliを実行する必要があることを思い出してください。







  $ sparrow project create monitoring #   -     $ sparrow task add monitoring nettest-download speedtest-cli $ sparrow task add monitoring nettest-upload speedtest-cli
      
      





最後の2つのコマンドを使用して、speedtest-cliユーティリティの異なる起動用のタスクを作成しました。次に、それらを構成します。







 $ sparrow task ini monitoring/nettest-download --- args: - timeout: 10 - - bytes - no-upload
      
      





$ sparrow task iniモニタリング/ nettest-upload







  --- args: - - bytes - no-download
      
      





次に、タスクを実行するだけです。







 $ sparrow task run monitoring/nettest-upload $ sparrow task run monitoring/nettest-download
      
      





ラッパーは準備が整っており、正常に機能しています。







おわりに



Sparrowを使用すると、ほぼすべてのコンソールユーティリティのラッパーを簡単かつ簡単に作成できます。 これにより、異なるユーティリティを使用して同じユーティリティを実行するために個別のスクリプトを記述する必要がなくなります。これには、シンプルで強力なSparrowタスクツールがあります。 Sparrowプラグインは、PerlがインストールされているほとんどすべてのLinuxサーバーに移植可能です。 また、Sparrowスタイルのスクリプトの設定には、YAMLおよびJSON形式の入力データの生成が含まれます。これにより、現代のプログラミング言語からのそのようなスクリプトの起動が大幅に簡素化され、自動化が容易になります。 たとえば、 Sparrowdoプロジェクトを見ると、sshを介してリモートでSparrowタスクを構成および実行できます。







関連リンク





心から、アレクセイ・メレジク、スパローの著者








All Articles