add some logging and turn off -x
parent
af6ad2f6ee
commit
55b2a8020c
24
run.sh
24
run.sh
|
@ -1,5 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -x
|
|
||||||
|
|
||||||
CONTAINER='openwrt_1'
|
CONTAINER='openwrt_1'
|
||||||
IFACE=$1
|
IFACE=$1
|
||||||
|
@ -12,6 +11,7 @@ function _usage {
|
||||||
function _get_phy_from_dev {
|
function _get_phy_from_dev {
|
||||||
if [[ -f /sys/class/net/$IFACE/phy80211/name ]] ; then
|
if [[ -f /sys/class/net/$IFACE/phy80211/name ]] ; then
|
||||||
PHY=$(cat /sys/class/net/$IFACE/phy80211/name 2>/dev/null)
|
PHY=$(cat /sys/class/net/$IFACE/phy80211/name 2>/dev/null)
|
||||||
|
echo "* got '$PHY' for device '$IFACE'"
|
||||||
else
|
else
|
||||||
echo "$IFACE is not a valid phy80211 device"
|
echo "$IFACE is not a valid phy80211 device"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -32,32 +32,48 @@ function _get_dev_from_phy {
|
||||||
}
|
}
|
||||||
|
|
||||||
function _cleanup {
|
function _cleanup {
|
||||||
docker stop openwrt_1
|
echo "* cleaning up..."
|
||||||
while [[ -z $IFACE_NEW ]]; do
|
echo "* stopping container"
|
||||||
|
docker stop openwrt_1 >/dev/null
|
||||||
|
echo -n "* restoring network interface name"
|
||||||
|
retries=10
|
||||||
|
while [[ retries -ge 0 && -z $IFACE_NEW ]]; do
|
||||||
_get_dev_from_phy $PHY
|
_get_dev_from_phy $PHY
|
||||||
sleep 1
|
sleep 1
|
||||||
|
let "retries--"
|
||||||
|
echo -n '.'
|
||||||
done
|
done
|
||||||
|
if [[ $retries -eq 0 ]]; then
|
||||||
|
echo "\nERROR: problem restoring interface name, you may need to restore it manually."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
sudo ip link set dev $IFACE_NEW down
|
sudo ip link set dev $IFACE_NEW down
|
||||||
sudo ip link set dev $IFACE_NEW name $IFACE
|
sudo ip link set dev $IFACE_NEW name $IFACE
|
||||||
|
echo "ok"
|
||||||
|
echo -ne "* finished"
|
||||||
}
|
}
|
||||||
|
|
||||||
function main {
|
function main {
|
||||||
test -z $IFACE && _usage
|
test -z $IFACE && _usage
|
||||||
|
|
||||||
_get_phy_from_dev
|
_get_phy_from_dev
|
||||||
|
|
||||||
|
echo "* setting interface '$IFACE' to unmanaged"
|
||||||
nmcli dev set $IFACE managed no
|
nmcli dev set $IFACE managed no
|
||||||
|
|
||||||
|
echo "* starting container"
|
||||||
docker run --rm \
|
docker run --rm \
|
||||||
--network=bridge \
|
--network=bridge \
|
||||||
-p8080:80 -d \
|
-p8080:80 -d \
|
||||||
--cap-add NET_ADMIN \
|
--cap-add NET_ADMIN \
|
||||||
--cap-add NET_RAW \
|
--cap-add NET_RAW \
|
||||||
--hostname openwrt\
|
--hostname openwrt\
|
||||||
--name $CONTAINER openwrt
|
--name $CONTAINER openwrt >/dev/null
|
||||||
|
|
||||||
pid=$(docker inspect -f '{{.State.Pid}}' $CONTAINER)
|
pid=$(docker inspect -f '{{.State.Pid}}' $CONTAINER)
|
||||||
|
|
||||||
sudo iw phy "$PHY" set netns $pid
|
sudo iw phy "$PHY" set netns $pid
|
||||||
|
echo "* ready"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue