Skip to content

Instantly share code, notes, and snippets.

@LadyNamedLaura
Created February 22, 2016 07:25
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save LadyNamedLaura/0fd6ea6fa754aff88d5e to your computer and use it in GitHub Desktop.
Save LadyNamedLaura/0fd6ea6fa754aff88d5e to your computer and use it in GitHub Desktop.
connect (and reconnect) to an lte(mbim) connection and set the network using systemd-networkd
#!/bin/sh
MODEM="$(mmcli -L | grep -o '/org/freedesktop/ModemManager1/Modem/[0-9]*' | head -1)"
BEARER="$(mmcli -m $MODEM --list-bearers | grep -o '/org/freedesktop/ModemManager1/Bearer/[0-9]*' | head -1)"
connect() {
MODEM="$(mmcli -L | grep -o '/org/freedesktop/ModemManager1/Modem/[0-9]*' | head -1)"
mmcli -m $MODEM --simple-connect=apn=web.be,user=web,password=web
BEARER="$(mmcli -m $MODEM --list-bearers | grep -o '/org/freedesktop/ModemManager1/Bearer/[0-9]*' | head -1)"
}
update_net() {
export connected="no"
eval export a=a $(mmcli -m $MODEM -b $BEARER | sed -n 's_.*|\s*\([a-zA-Z]*\):\s*\(.*\)_\1="\2"_p' | tr -d "',")
if [ "$connected" != "yes" ]
then
echo Reconnecting
connect
return 1
fi
cat > /run/systemd/network/wwan.network.new << EOF
[Match]
Name=${interface}
[Network]
Address=${address}/${prefix}
DNS=${DNS}
[Route]
Gateway=${gateway}
Metric=2048
EOF
if ! diff -u /run/systemd/network/wwan.network{,.new}
then
mv /run/systemd/network/wwan.network{.new,}
systemctl restart systemd-networkd
fi
}
while true
do
update_net && sleep 5 || sleep 1
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment