
今日、私はあなたに、私の頭に浮かび、さらには人生に具体化された一つのクレイジーなアイデアについてお話します。
注意! 以下のすべては行動へのガイドではなく、それを知覚することはユーモアにすぎない。 そして、それは誰もが痛々しく真剣に受け止めました... =)
まず、少しの背景。 最近、そこに
svn diff > mypatch.diff
を実行し、ftp経由で結果を転送するために、Unixベースのコンピューターへのsshアクセスが非常に緊急に必要でした。 しかし、何らかの理由でターゲットマシンがpingを実行したくないことがわかりました。 さらに、管理者によると、インターネットへのアクセスはありますが、pingの実行は想定されていません。 そして、私はサードパーティの何かを通してsshを転送するのがいいだろうと決めました。 VPN、リバースssh、トンネルなどがすぐに私の頭に乗り始めました。 しかし、ほとんどのソリューションでは、追加のマシンおよび/または追加のソフトウェアが必要です。または、ネットワーク自体を再構成する必要があります(これは私にとってまったく選択肢ではありません-ネットワークは私のものではありません)。 私はすでに絶えず絶望し、グーグルで頑張る準備ができていましたが、その考えは
実際、アイデアは非常に単純です。 ドロップボックスで、スクリプトがターゲットマシンを監視するフォルダを作成します。 そして、正しいファイル(私の場合は
*.sh
)を見つけると、それを起動し、stdoutとstderrをテキストファイルにリダイレクトします。 そして、そのテキストファイルは再びドロップボックスに投げますが、別のパパに投げます。
その結果、次のようなものが出てきました。ドロップボックスにはshell_in、shell_out、shell_doneフォルダーがあります。 スクリプトは最初のフォルダーを監視し、スクリプトを検出して一時フォルダーに移動し、名前に日時を追加して実行し、出力をファイルに書き込み、shell_outにスローし、実行されたスクリプトをshell_doneに移動して履歴を取得します。
スローするスクリプト自体は、ユーザーの操作を必要としないものであれば何でも実行できます。 たとえば、いくつかのファイルをドロップボックスにコピーします-これはFTPの特定の類似物です!
この方法の長所と短所:
+ターゲットシステムからのドロップボックスとネットワーク接続のみが必要
+スクリプトは、デーモンが実行されているユーザーの代わりに実行されます
+アプローチの柔軟性、OSへの移植が容易
+スクリプトは、テキストエディターとドロップボックスがある場所であればどこからでも実行できます。
-さようならMC =(
-FTPと比較して低いファイル転送速度
-sudoを介してスクリプトを実行する方法はありません
-リアルタイムではない
-スクリプトを作成する必要がある最も単純なコマンドでも
-アプリケーションの出力を表示するには、テキストファイルを読む必要があります
-実際、そのような方法はナンセンスですが、クール=)
一般的に、私はこのビジネスを実装することにしました。 ツールとしてシェルスクリプトを選択しました。 プラットフォームに依存しない優れた方法でファイルシステムをすぐに監視する方法を見つけられなかったため、5秒後に
sleep
無限ループのファイルをチェックすることにしました。 誰かがこれをしない良い方法を教えてくれたら、感謝します。
コードは簡単ですが、 念のためにgithubに投稿した場合-誰にとっても便利な場合はどうでしょうか?
バッチのデーモンであるWindowsの類似物を作成し、バッチファイルも探します。 最良の方法は、すべてをC ++またはPythonで書き直すことです。プラットフォームに依存しないように(同時に、ファイルの変更についてプラットフォーム通知機能を使用します)。
PS :上記のすべては単に楽しみのために行われますが 、この方法を使用した実際の作業はセキュリティ上の理由から推奨されません 。xmpp-sshなどのより安全なものを使用することをお勧めします 。