bash シェル スクリプトを使用して共有ホストのセットアップを自動化することは可能ですか?

bash シェル スクリプトを使用して共有ホストのセットアップを自動化することは可能ですか?

前文: これまでシェル bash スクリプトを作成したことはありません。まず第一に、これがこの作業に適したツールであるかどうかさえわかりません。適していない場合は、何よりもまず、あなたの意見では最良の代替手段は何であるかを教えてください。

コンテクスト: 私は Web サイトをセットアップするたびに、同じタスクを頻繁に繰り返し実行します。1 つまたは 2 つのコマンドを実行して、これらのタスクを自動化したいと考えています。更新: 共有ホストは Unix ベースです。ローカル マシンは Mac OS X なので、これも Unix ベースです。

例として、私がよく行うタスク (コマンド) をいくつか示します。

SCP-1000: いいえ

scp ~/local/path/general_web_app/.bash_profile [email protected]:/home/HOSTNAME/.bash_profile

scp ~/local/path/general_web_app/.gitconfig [email protected]:/home/HOSTNAME/.gitconfig

SSH 直接:

ssh [email protected] 
cd /www/www/
git init
git add .
git commit -a -m "first commit"
cd ~/private/ && mkdir repos

編集、検索、置換、保存、終了:

pico ~/remote/private/repos/general_hub.git/hooks/post-update
replace "user" WITH "hostname";
hit "cmd x"
hit "y"

私の知る限りでは、これらはスクリプトに実行させたいさまざまな種類のタスクです。

質問1: bash スクリプトは SCP、SSH を直接処理し、EDIT FIND REPLACE SAVE AND EXIT を実行できますか?

質問2: スクリプトを実行するユーザーにいくつかのパラメータを尋ね、それらのパラメータを使用していくつかのファイル内に配置する必要があります (存在する特定のキーワードを置き換えます)。これは実現できますか?

質問3: ファイルをリモートにコピーしてリモートで直接編集するべきでしょうか、それとも、ファイルをローカルで取得して「一時的な場所でローカルに編集」してからサーバーに配置するべきでしょうか? 2 番目の方がはるかに複雑だと思います。

参考にできる例はありますか?

よろしくお願いします

答え1

簡単に答えると、すべて「はい」です。

いくつか例を挙げます。以下は、ローカルの bash スクリプトをリモート マシン上で実行するコマンドの例です。リモートにコピーする必要がないことに注意してください。

   ssh user@remote_pc 'bash -s' < local_file.sh

これは非常に単純なので、これを処理するためにスクリプト全体を書くほどの価値はないかもしれませんが、スクリプトで処理したい場合は、スクリプトを使用して調整することもできます。ただし、これを機能させるには、passwordless loginssh 接続を設定する必要があります。設定しないと、スクリプト内の ssh/scp コマンドは、リモート ユーザーのパスワードの入力を待機するため停止します。

編集などに関しては、Unixには究極のストリームエディタがありsed、まさにこれを行います。たとえば、コマンド

 sed 's/a/A/g' old_file.txt > new_file.txt

小文字をa大文字に置き換えA、出力を新しいファイルに配置します。これも簡単にスクリプト化できます。

パラメータに関しては、シェルスクリプトはファイルからパラメータを読み込むことも、環境からパラメータを問い合わせることもできます。ユーザーにログイン名を尋ねる必要はありません。

  echo $USER
  whoami

スクリプト内からでもそれが実行されます。自宅住所echo $HOMEなどについても同様です。

3 番目の質問については、私の最初の回答がその答えにもなっていることを願っています。最初のコマンドを使用すると、ローカルで編集したスクリプト ファイルをリモート サーバーにコピーしなくても実行できます。

*Nixの世界へようこそ。あなたの望みは私の命令です

すみません、忘れていました:このコマンド

  export -p | more

どこでも利用可能なすべてのローカル変数を表示します(技術的には、 輸出された)。

関連情報