2016-01-05 79 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 
相关问题