我一直在開發一個使用Capistrano的自動化部署,並使用Vagrant作爲我的測試虛擬服務器。如何找到Vagrant IP?
事情是,我需要流浪的IP到「ssh
」。
我試過ifconfig
並得到了IP,但它看起來並不是確切的流浪IP。
任何人都可以幫助我獲得Vagrant IP嗎?
我一直在開發一個使用Capistrano的自動化部署,並使用Vagrant作爲我的測試虛擬服務器。如何找到Vagrant IP?
事情是,我需要流浪的IP到「ssh
」。
我試過ifconfig
並得到了IP,但它看起來並不是確切的流浪IP。
任何人都可以幫助我獲得Vagrant IP嗎?
運行:
vagrant ssh-config > .ssh.config
,然後在config/deploy.rb
role :web, "default"
role :app, "default"
set :use_sudo, true
set :user, 'root'
set :run_method, :sudo
# Must be set for the password prompt from git to work
default_run_options[:pty] = true
ssh_options[:forward_agent] = true
ssh_options[:config] = '.ssh.config'
不幸的是,'vagrant ssh-config'不顯示虛擬機的真正SSH配置。使用該IP /端口只會給你錯誤「名稱或服務未知」 – Cerin 2016-02-23 19:55:16
爲什麼當這個答案顯然是錯的時候接受了?所有這個命令的作用就是向你顯示在你的主機上使用的配置文件,以便進入流浪盒。如果您在Vagrant文件中使用'private_network'設置,並且想要查找您的虛擬機的IP,以便您可以對其進行HTTP請求或其他任何操作,那麼如下所述,它似乎是目前唯一的方法,並使用'ifconfig'或其他東西來查明。 – 2016-12-20 21:49:05
我在一段時間內沒有使用過流浪漢,但在我使用它的那一天,它正在工作:) – mpapis 2016-12-28 12:06:54
我發現我做需要的IP,以在主機系統上配置/etc/hosts
在服務上的新指向VM。
下面是我用來獲取IP的粗略版本。讓Vagrant執行SSH魔術並向VM發送地址;調整您的需求。
new_ip=$(vagrant ssh -c "ip address show eth0 | grep 'inet ' | sed -e 's/^.*inet //' -e 's/\/.*$//'")
我剛剛發現這個在Vagrant Docs。看起來他們認爲這是一個有效的方法:
這將自動分配一個IP地址從保留地址 空間。 IP地址可以通過使用vagrant ssh來確定,將SSH 插入本機並使用相應的命令行工具找到 的IP,如ifconfig。
該命令導致包含換行符,當變量用於另一個命令如捲曲(我正在使用OSX)。這似乎效果更好:'$(vagrant ssh -c「ip address show eth0」2>/dev/null | sed -ne'/ inet/s/\ s \ + inet \([^ \ /] \ + \ )。* \ r/\ 1/p')' – jamesbishopp 2015-06-15 18:00:41
有趣的是,當我發佈這篇文章時,我在OSX上,雖然我有一段時間沒有使用流浪漢,也許有什麼改變?感謝分享! – quickshiftin 2015-06-15 18:12:37
刪除該換行符的更好方法是簡單地添加'| tr -d'\ n'就像這樣:'vagrant ssh -c「ip address show eth0 | grep'inet'| sed -e's /^.* inet //'-e's /\/.*$ //'| tr -d'\ n'「2>/dev/null' – geowa4 2015-08-10 12:51:51
我確實在VagrantFile:
REMOTE_IP = %x{/usr/local/bin/vagrant ssh-config | /bin/grep -i HostName | /usr/bin/cut -d\' \' -f4}
run "ping #{REMOTE_IP}"
正如你所看到的,我用 「%X {}」 紅寶石功能。
我爲此開發了一個小型vagrant-address插件。它非常簡單,跨平臺,跨供應商,不需要腳本。
默認情況下,一個流浪漢框沒有任何IP地址。爲了查找IP地址,你只要將你的Vagrantfile
的IP地址,然後調用vagrant reload
如果你只是需要從只有主機訪問一個無業遊民機,設立了「專用網」是你所需要的。取消註釋默認Vagrantfile
中的相應行,或添加此片段。如果你希望你的虛擬機出現在172.30.1.5
這將是如下:
config.vm.network "private_network", ip: "172.30.1.5"
瞭解更多關於私有網絡。https://www.vagrantup.com/docs/networking/private_network.html
如果您需要流浪漢是您的主機外部訪問,例如針對移動設備,如iOS或Android開發,您必須啓用公共網絡,可以使用靜態IP,如192.168.1.10
,或DHCP。
config.vm.network "public_network", ip: "192.168.1.10"
詳細瞭解如何配置公共網絡https://www.vagrantup.com/docs/networking/public_network.html
開放終端,來到你的Vagrantfile的路徑和寫這篇
(Linux)的 遊民SSH -c「主機名-I | cut -d''-f2'2>/dev/null
(OS X) vagrant ssh -c「hostname -I | cut -d''-f2」2>/dev/null | pbcopy
Linux的命令也適用於windows。我無法測試,對不起。
來源:https://coderwall.com/p/etzdmq/get-vagrant-box-guest-ip-from-host
這應該是被接受的答案。它很簡單,可以編寫腳本,並返回流浪箱使用的實際IP地址。 – gbe 2017-11-04 05:07:45
只是一個提醒,任何人讀這... ssh到一個流浪漢框的方式,就是你所在的位置Vagrantfile存在的文件夾中,並且只需要輸入'無業遊民ssh'。不需要IP地址。但是,爲了編寫腳本或創建/ etc/hosts條目,這裏的答案特別有用,[this one](https://stackoverflow.com/a/41251906/1028855)。 – gbe 2017-11-04 05:12:24
在Windows窗口中獲得答案也很有趣 – 2017-11-16 05:43:07