2016-01-05 433 views
-2

我在VirtualBox中有一個虛擬機。由於DHCP,它獲得了一個特定的本地IP。例如192.168.18.16如何使Linux上的虛擬機(VM)始終可以使用upnpc進行實時UPNP重定向訪問

我使用upnpc(miniupnpc包)爲了創建從互聯網到特定端口的重定向。 例如,對於FTP(端口21),我可以創建從VM的1621外部端口到21端口的重定向。我使用cron與線:

* * * * * upnpc -a 192.168.10.16 21 1621 TCP 

我的VM可以在不同的網絡上運行,並獲得不同的IP,如192.168.19.16,192.168.30.16 ...

我不想手動修改重定向取決於正在運行的網絡。 因此,我想在crontab -e命令:

* * * * * upnpc -a $(ifconfig eth0 | grep 'adr:' | cut -d: -f2 | awk '{ print $1}') 21 1621 TCP 

,但它沒有工作,爲什麼?我能做什麼 ?

THX你的答案

+0

本網站旨在解答有關編程的問題。您更有可能在[超級用戶](http://superuser.com) – simonc

+0

Thx上爲您的評論獲得有關使用現有程序的問題的答案,但我認爲它是bash編程。你同意嗎? – Platypus

+0

你的'ifconfig eth0 | grep'adr:'| cut -d:-f2 | awk'{print $ 1}''可能是錯誤的。查看ifconfig的輸出並修復它。例如在我的機器上,這沒有任何問題,而'ifconfig eth0 | grep'inet'| awk'{print $ 2}''給了我198.18.32.1,這確實是我eth0的IP。 – jbm

回答

0

我想避免使用腳本的一個LIGNE命令,但這個工程:

VIM redirect.sh

#!/bin/bash 
IP=$(ifconfig eth0 | grep 'adr:' | cut -d: -f2 | awk '{ print $1}') 

PORT_EXTERN=${$1:-0} 
PORT_INTERN=${$2:-0} 
PROTOCOL=${$3:-TCP} 
COMMENT=$4 
IP_DESTIN=${$5:-$IP} 

upnpc -a $IP_DEST $PORT_INTERN PORT_EXTERN $PROTOCOL #-e $COMMENT 

而在crontab -e命令:

* * * * * /path_to_script/redirect.sh 1621 21 TCP MY_REDIRECTION 
相關問題