1

朝から始めるのに何歩かかるのか、うんざりしました。はい、環境全体を起動するのに数分しかかかりませんが、実際には、起動時に1つのコマンドを実行するだけで、すぐに実行できるようになります。

SqlServerに接続されたRailsでアプリを作成しています。そのために開発するために、VMで使用するDBのローカルバージョンがあります。私の手動プロセスは次のようになります。

Run VirtualBox.
Start the VM.
     When the VM is done booting:
          Open terminal
          Run `rails s`
          When rails is done starting:
                 open browser
                 navigate to localhost:3000 and start developing
Run Sublime

これを1つのスクリプトで実行したいと思います。

VirtualBox Windows7 &
sublime &
google-chrome &

しかし、VMの起動が完了した後でのみ、このコマンドを実行する方法を理解することはできません。

gnome-terminal --working-directory=git/my_project --tab -e 'rails s' --tab -e 'git status'

また、 railsが成功した後にchromeを開始するのは良いことです(必須ではありません) 。

これも可能ですか?

私はポーリングに反対していませんが、これはVirtualBoxがもう少し自然にできるはずのことのように感じます。

編集

コメントから:

2つのブリッジインターフェイス(1つはワイヤレス用、もう1つは有線用)が利用可能なホストオンリーネットワークを使用しています。(ネットワークに接続しているかどうかに関係なくVMを使用でき、違いに気付かずに有線と無線を自由に切り替えることができます)。

4

4 に答える 4

1

これが私がする方法です:

  1. VMで、デフォルトゲートウェイを見つけるスクリプトを作成し、それにpingを実行し続けます。&それをユーザーのスタートアップに追加します。(解析はipconfig /allvbscript / pythonで実行できる必要があります。)
  2. ホストで、ホストとVM間のネットワークインターフェイスを確認します。ホスト上のデフォルトゲートウェイを見つけます(route -nbashスクリプトの出力を解析します)。どちらも同じ物理インターフェイスを使用するため、ゲートウェイは同じになります(NATと1つの物理インターフェイスを想定)。tcpdumpを使用して、ゲートウェイへのpingパケットを待機します。

「デフォルトゲートウェイ」が選択されたのは、それがホストとVMが互いに独立して検出できるものだったためです。他の代替手段は、ホストのアドレスをハードコーディングすることでした。

ホスト上のホストtcpdumpが終了すると、VMが稼働しており、Windowsデスクトップで起動していることを意味します。

于 2012-12-13T10:22:17.193 に答える
0

私は以前にこの一連の問い合わせを調べましたが、Devil's Pieは、それを設定するのに最も近いと思います。

http://burtonini.com/blog/computers/devilspie

于 2012-11-01T13:16:17.057 に答える
0

これから始めてみることができます(VBoxManager startvm):

VirtualBoxマシンを自動的に起動およびシャットダウンする方法は?

次に、VMが稼働して残りのジョブを順番に完了するようになったら、実行中のスクリプトをいくつか見て、init.dやrc.localに追加します。

Linuxを知る:/etc/init.dディレクトリ

于 2012-12-17T23:13:17.803 に答える
0

私は似たようなものを調整する必要がありました。Linuxラップトップ(ホスト)のプロキシ(Windowsのみの企業VPNクライアントを実行)としてWindows VM(ゲスト)を使用しています。アプローチは、ゲストを完全に自動化し、準備ができるまで待つことです。

  1. ホストにはファンキーなルートがあってはなりません(まだ)
  2. VMは、VPNクライアントを接続してICS(インターネット接続の共有、基本的にはルーティング)をセットアップするPowerShellスクリプト(Windowsタスクスケジューラ、run-on-startupを介して)を起動して実行します。
  3. ホストは、VMのホスト専用インターフェースを介してトラフィックを送信するファンキーなルートを追加するようになりました。これらのルートの追加が早すぎると、手順2は機能しません。
  4. VMもsquid(httpプロキシ)を実行し、そのポートはホストから転送されたNATポートであるため、localhost:3128は実際にはゲストに送信されます。したがって、このプロキシを使用するカールは企業ネットワークに行き、ゲストが完全に稼働して接続されているかどうかを示します。

(Squidは、この複雑ですが非常に便利なメカニズムのバックアップとしても役立ちます。コルク栓抜きなどを介してsshを実行できます)

したがって、このスクリプトをホストで実行します(簡略化されたバージョンを示しています)。

#!/bin/bash
VM=vm  #Name of the Virtual Machine
SCRIPT_DIR=/some/dir
PROXY_ADDRESS=localhost:3128 
REMOTE_CURL_HOST=any.corporate.hostname

function waitloop() {
    echo -n "Waiting to hear from $REMOTE_CURL_HOST "
    while ! curl -s -m 5 --proxy $PROXY_ADDRESS $REMOTE_CURL_HOST > /dev/null ; do
        echo -n .
        sleep 10
    done
    echo "!"
}

# a separate script that takes down my routes, you may not need this.
bash $SCRIPT_DIR/network-config-vboxnet0.sh down

# error is OK if it's already running
vboxmanage startvm $VM

waitloop && bash $SCRIPT_DIR/network-config-vboxnet0.sh up && echo "Completed"

基本的に、スクリプトはcurlがVMを介して機能するまで待機します。

于 2019-04-01T18:17:01.413 に答える