[ARMedslack] qemu-network-tun.sh modified script
Davide
louigi600 at yahoo.it
Tue May 3 22:25:54 UTC 2011
I fixed a few other things:
the static network now get properly restarted
will not kill blindly all dhcp clients ... only the instance running on eth0
will only set sysctl options if they are avalible
#!/bin/sh
[ -f /proc/sys/net/ipv4/ip_forward ] && sysctl -w net.ipv4.ip_forward=1
[ -f /proc/sys/dev/rtc/max-user-freq ] && \
sysctl -w dev.rtc.max-user-freq=1024
if [ $(ifconfig |grep "Link encap" |grep -c "^br0") -lt 1 ]
then
if [ $(ps -eo pid,cmd |grep -v grep |grep dhcpcd |grep -c eth0) -ge 1 ]
then
RESTART_NET="dhcpcd -t 10 br0"
kill -9 $(ps -eo pid,cmd |grep -v grep |grep dhcpcd |grep eth0 |awk '{print $1}')
else
RESTART_NET="ifconfig br0 $(ip addr show dev eth0 |grep inet |awk '{print $2}')"
ifconfig eth0 0.0.0.0 down
fi
brctl addbr br0
brctl stp br0 off
brctl setfd br0 1
brctl addif br0 eth0
$RESTART_NET
fi
/sbin/ifconfig $1 0.0.0.0 promisc up
/sbin/brctl addif br0 $1
sleep 1
brctl show
--- Ven 29/4/11, John O'Donnell <unixjohn1969 at gmail.com> ha scritto:
> Da: John O'Donnell <unixjohn1969 at gmail.com>
> Oggetto: Re: [ARMedslack] qemu-network-tun.sh modified script
> A: "Slackware ARM port" <armedslack at lists.armedslack.org>
> Data: Venerdì 29 Aprile 2011, 10:23
> On 04/29/2011 04:06 AM, Davide
> wrote:
> > If anyone else finds this handy this works with dhcp
> client on both host and guest and also gets rid of all
> rc.local requirements.
> > On the guest os you will need to config interface once
> system is up (static or via dhcp)
> > Needs fixing for static ip reconfiguration/rerouting
> on host system after bridge creation.
> >
> > I apologize for my non standard indentation ...
>
> Also if anyone cares, I wrote a script like that over a
> year ago to lanuch a private network for many VMs (all Linux
> distros - many versions) to compile software for a company I
> was at. It is configured a private network so some
> assembly is required. But I made most of it
> configurable up top so it could be on a public
> adapter. I developed it on Slack (of course) then
> deployed it to a Suse production box. I had set up NFS
> on the host with the source code. The source would get
> copied to its own branch for the machine it was compiling
> for, fire up the VM, compile over NFS, create package on NFS
> host (rpm/tgz/txz/deb/etc), then die, rinse and repeat.
>
> #!/bin/sh
> # Start/stop qemu's private network
> # Revised: 12/16/2009 JJO
> ### BEGIN INIT INFO
> # Provides: qemunet
> # Required-Start: $network
> # Required-Stop: $network
> # Default-Start: 3 5
> # Default-Stop: 0 1 2 6
> # Description: Start the qemu private network
> ### END INIT INFO
>
> ETHIP=10.10.10.1
> GATEWAY=
> ETHBC=10.10.10.255
> BRIDGE=br0
> ETH=dummy0
> TAP=tap0
>
> # A little SuSE sanity check
> [ -f /etc/SuSE-release ] && /sbin/rmmod dummy0
> >/dev/null 2>&1
>
> # Start the qemu private network
> qemunet_start() {
> # Make sure the qemu private network isnt already
> running
> PROBLEM=FALSE
> for IF in $ETH $TAP $BRIDGE; do
> /sbin/ifconfig | grep $IF >/dev/null
> 2>&1
> [ $? = 0 ] && PROBLEM=TRUE
> done
> if [ $PROBLEM = TRUE ]; then
> echo "All or part of the qemu private network
> is already running!"
> echo "Cowardly refusing to start it
> again! BYE!"
> exit 1
> fi
>
> echo "Starting the qemu private network..."
> # Make sure the kernel module is loaded
> /sbin/lsmod | grep dummy >/dev/null 2>&1
> [ $? = 1 ] && /sbin/modprobe dummy
>
> # First take interface down, then bring it up with
> IP 0.0.0.0
> /sbin/ifconfig $ETH down
> /sbin/ifconfig $ETH 0.0.0.0 promisc up
>
> # Bring up the tap device (name specified as first
> argument, by QEMU)
> /usr/sbin/openvpn --mktun --dev $TAP
> /sbin/ifconfig $TAP 0.0.0.0 promisc up
>
> # create the bridge between eth0 and the tap device
> /sbin/brctl addbr $BRIDGE
> /sbin/brctl addif $BRIDGE $ETH
> /sbin/brctl addif $BRIDGE $TAP
> # only a single bridge so loops are not possible,
> turn off spanning tree protocol
> /sbin/brctl stp $BRIDGE off
>
> # Bring up the bridge with ETHIP and add the default
> route
> /sbin/ifconfig br0 $ETHIP netmask 255.255.255.0
> broadcast $ETHBC
> [ -n "$GATEWAY" ] && /sbin/route add default
> gw $GATEWAY
> }
>
> # Stop the qemu private network
> qemunet_stop() {
> echo "Stopping the qemu private network..."
> # Bring down interface and br0
> /sbin/ifconfig $ETH down
> /sbin/ifconfig $BRIDGE down
> /sbin/rmmod dummy
>
> # Delete the bridge
> /sbin/brctl delbr $BRIDGE
>
> # delete the tap device
> /usr/sbin/openvpn --rmtun --dev $TAP
> }
>
> # Restart the qemu private network
> qemunet_restart() {
> qemunet_stop
> sleep 1
> qemunet_start
> }
>
> # Check if the qemu private network is up and running
> qemunet_status() {
> echo -n "Checking the qemu private network: "
>
> # Check the qemu private inetwork
> for IF in $ETH $TAP $BRIDGE; do
> /sbin/ifconfig | grep $IF >/dev/null
> 2>&1
> if [ $? = 1 ]; then
> echo -n "$IF is down"
> else
> echo -n "$IF is up"
> fi
> if [ $IF = $BRIDGE ]; then
> echo "."
> else
> echo -n ", "
> fi
> done
> }
>
> case "$1" in
> 'start') qemunet_start ;;
> 'stop') qemunet_stop ;;
> 'restart') qemunet_restart ;;
> 'status') qemunet_status ;;
> *) echo "usage $0 start|stop|restart|status"
> esac
>
> -- === Never ask a geek why, just nod your head and slowly
> back away.===
> +================================+==================================+
> | John O'Donnell
> |
>
> |
> | (Sr. Systems Engineer,
> | http://juanisan.homeip.net
> |
> | Net Admin, Programmer, etc.) | E-Mail:
> unixjohn1969 at gmail.com
> |
> +================================+==================================+
> No man is useless who has a friend, and if we are loved we
> are
> indispensable. -- Robert Louis Stevenson
> _______________________________________________
> ARMedslack mailing list
> ARMedslack at lists.armedslack.org
> http://lists.armedslack.org/mailman/listinfo/armedslack
>
More information about the ARMedslack
mailing list