[ARMedslack] qemu-network-tun.sh modified script

Davide louigi600 at yahoo.it
Wed May 4 08:47:09 UTC 2011


That last one did not kill right the dhcp client on eth0.

This should fix it:
#!/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"
    dhcpcd -k eth0
  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


--- Mer 4/5/11, Davide <louigi600 at yahoo.it> ha scritto:

> Da: Davide <louigi600 at yahoo.it>
> Oggetto: Re: [ARMedslack] qemu-network-tun.sh modified script
> A: "Slackware ARM port" <armedslack at lists.armedslack.org>
> Data: Mercoledì 4 maggio 2011, 00:25
> 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
> > 
> _______________________________________________
> ARMedslack mailing list
> ARMedslack at lists.armedslack.org
> http://lists.armedslack.org/mailman/listinfo/armedslack
> 


More information about the ARMedslack mailing list