Rubyでリモートでローカルファイルを操作しますか?
-
18-09-2019 - |
質問
リモートサーバーで実行されているシンプルなRailsアプリからラップトップにシンボリックリンクの作成を自動化したいと思います。どこからでもラップトップでカーネルタスクを実行できる必要があります。これも可能ですか?
解決
リモコンからスクリプトを取得して実行します
サーバーは、ラップトップで実行されることを目的とするシェルまたはRubyスクリプトを作成できます。ラップトップは、このスクリプトを定期的にチェックして実行する必要があります。これの利点は次のとおりです。
- これは、ラップトップだけでなく、スクリプトをチェックする他のマシンでも機能します。
- HTTP以外の輸送は必要ありません
- サーバーは事前にクライアントを知る必要はありません
- これは、クライアント側に変更せずにシンボリックリンクを作成する以外のタスクで機能します。
クライアント側は次のように簡単になる可能性があります。
wget -O - "url" | ruby -
また
wget -O - "url" | sh -
サーバーにシンボリックリンクのリストを生成します
サーバーは、必要なシンボリックリンクのリストを作成できます。クライアントマシンでは、このリストを定期的に解析し、シンボリックリンクを作成するプログラムが必要です。利点は次のとおりです。
- サーバーを信頼する必要はありません
- サーバーはできません
rm -rf /
偶然 - HTTP以外の輸送は必要ありません
- これは、ラップトップだけでなく、リストをチェックする他のマシンでも機能します。
クライアント側は簡単になる可能性があります
wget -O - "url" | ruby -r yaml -e "YAML.load(STDIN).each { |a, b| \`ln -s \"#{a}\" \"#{b}\" \` }"
他のヒント
ヒューズを使用してファイルシステムをマウントすることで、それを行うことができます。私の意見では、それはかなりきちんとした小さなことです。
編集:リンクをPoint to Fusefsに変更しました。これはRuby Bindingsと融合します。これは、Rubyを使用している場合に必要なものです。
RubyベースのPuppetを使用できます。
それだけの場合 君の ラップトップと他のクライアントはありません。サーバーSSHをラップトップに作成し、必要なことは何でも実行できます。一般に、いいえ、HTTPサーバーがクライアントマシンで何もすることはできません。
所属していません StackOverflow