Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
HenrikAn
Inlägg: 1436 Blev medlem: 17 jun 2006, 21:39
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Hägersten
Inlägg
av HenrikAn » 26 maj 2008, 15:48
Jag hade tänkt mig något i stil med:
Kod: Markera allt
#!/bin/sh
# /etc/udev/rules.d/99-huawei.rules
if [ -s /etc/udev/rules.d/99-huawei.rules ]
then
echo "Filen /etc/udev/rules.d/99-huawei.rules existerar redan."
else
sudo echo "SUBSYSTEM=="block", \
ACTION=="add", \
SYSFS{idVendor}=="12d1", \
SYSFS{idProduct}=="1003", \
RUN+="/sbin/modprobe usbserial vendor=0×12d1 product=0×1003", \
OPTIONS="ignore_device" > /etc/udev/rules.d/99-huawei.rules
echo "Filen /etc/udev/rules.d/99-huawei.rules är nu skapad."
echo "Glöm inte att ta bort och sätta tillbaks modemet!"
fi
# 3G profiles
# tele2
if [ -s $HOME/.vmc2/mobile-profiles/tel2_3G ]
then
echo "Inställningsfilen tele2_3G existerar redan"
else
echo "Profile name = tele2_3G
username = 3G
password = internet
Preferred connection = 3G only
Authentication mode = default
APN host = internet.tele2.se" > $HOME/.vmc2/mobile-profiles/tele2_3G
echo "Inställningsfilen tele2_3G är nu skapad."
fi
# Telia
if [ -s $HOME/.vmc2/mobile-profiles/Telia_3G ]
then
echo "Inställningsfilen Telia_3G existerar redan"
else
echo "Profile name = Telia_3G
username = 3G
password = internet
Preferred connection = 3G only
Authentication mode = default
APN host = online.telia.se" > $HOME/.vmc2/mobile-profiles/Telia_3G
echo "Inställningsfilen Telia_3G är nu skapad."
fi
#3
if [ -s $HOME/.vmc2/mobile-profiles/tre_3G ]
then
echo "Inställningsfilen tre_3G existerar redan"
else
echo "Profile name = tre_3G
username = 3G
password = internet
Preferred connection = 3G only
Authentication mode = default
APN host = data.tre.se" > $HOME/.vmc2/mobile-profiles/tre_3G
echo "Inställningsfilen tre_3G är nu skapad."
fi
echo "Allt klart! :)"
Men det skiter sig ju redan på rad 8 (antar jag) då det är en hel massa dubbelfnuttar med i det som ska in i filen...
Vad göra?
Finns det något smartare sätt? (Jag vill undvika att man ska vara uppkopplad när man kör själva scriptet)
Konservburk
Inlägg: 5919 Blev medlem: 07 apr 2007, 22:28
Inlägg
av Konservburk » 26 maj 2008, 16:50
Om du vill ha in dubbelfnuttarna i filen så måste du escapa dem, antingen genom att sätta allt inom enkelfnuttar eller genom sätta ett backslash framför varje dubbelfnutt. Men hela escape-metoden kan lätt bli väldigt komplicerad, speciellt om man vill ha med både enkel- och dubbelfnuttar och kanske också bakåtfnuttar och dollartecken och backslash. Man kan med fördel istället använda något som kallas för
here-document för att slippa allt strul med escapeande:
Och motsvarande med sudo:
Kod: Markera allt
sudo tee din_fil <<\EOF >/dev/null
a
"b"
c
EOF
HenrikAn
Inlägg: 1436 Blev medlem: 17 jun 2006, 21:39
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Hägersten
Inlägg
av HenrikAn » 26 maj 2008, 21:38
Tack!
Då har man lärt sig något nytt även idag!
Så här blev det:
Kod: Markera allt
#!/bin/sh
# /etc/udev/rules.d/99-huawei.rules
if [ -s /etc/udev/rules.d/99-huawei.rules ]
then
echo "Filen /etc/udev/rules.d/99-huawei.rules existerar redan."
else
sudo tee /etc/udev/rules.d/99-huawei.rules <<\EOF >/dev/null
SUBSYSTEM=="block", \
ACTION=="add", \
SYSFS{idVendor}=="12d1", \
SYSFS{idProduct}=="1003", \
RUN+="/sbin/modprobe usbserial vendor=0×12d1 product=0×1003", \
OPTIONS="ignore_device"
EOF
echo "Filen /etc/udev/rules.d/99-huawei.rules skapades."
echo "Glöm inte att ta bort och sätta tillbaks modemet!"
fi
# 3G profiles
if [ -s $HOME/.vmc2/mobile-profiles/ ]
then
echo "Katalogen $HOME/.vmc2/mobile-profiles existerar redan!"
else
echo "Katalogen $HOME/.vmc2/mobile-profiles skapades."
mkdir -p $HOME/.vmc2/mobile-profiles
fi
# tele2
if [ -s $HOME/.vmc2/mobile-profiles/tele2_3G ]
then
echo "Inställningsfilen tele2_3G existerar redan"
else
cat <<\EOF >$HOME/.vmc2/mobile-profiles/tele2_3G
Profile name = tele2_3G
username = 3G
password = internet
Preferred connection = 3G only
Authentication mode = default
APN host = internet.tele2.se
EOF
echo "Inställningsfilen tele2_3G skapades."
fi
# Telia
if [ -s $HOME/.vmc2/mobile-profiles/Telia_3G ]
then
echo "Inställningsfilen Telia_3G existerar redan"
else
cat <<\EOF >$HOME/.vmc2/mobile-profiles/Telia_3G
Profile name = Telia_3G
username = 3G
password = internet
Preferred connection = 3G only
Authentication mode = default
APN host = online.telia.se
EOF
echo "Inställningsfilen Telia_3G skapades."
fi
#3
if [ -s $HOME/.vmc2/mobile-profiles/tre_3G ]
then
echo "Inställningsfilen tre_3G existerar redan"
else
cat <<\EOF >$HOME/.vmc2/mobile-profiles/tre_3G
Profile name = tre_3G
username = 3G
password = internet
Preferred connection = 3G only
Authentication mode = default
APN host = data.tre.se
EOF
echo "Inställningsfilen tre_3G skapades."
fi
#Telenor
#if [ -s $HOME/.vmc2/mobile-profiles/Telenor_3G ]
#then
# echo "Inställningsfilen tele2_3G existerar redan"
#else
# echo "Något här..."
# echo "Inställningsfilen Telenor_3G är nu skapad."
#fi
echo "Allt klart! :)"
Återstår bara att testa om det fungerar och går att använda på ett nybörjarvänligt sätt...