Portál AbcLinuxu, 5. listopadu 2025 01:54
Ti, kteří si také občas rádi zahrají linuxový port heroes3 od Loki, vědí že síťová hra přes TCP/IP padá pokud není v adresáři s nastavením: ~/.loki/heroes3 vytvořen: soubor userprofile.txt s textem: ipaddress=<prislusna ip adresa>.
Pokud člověk nemá pevnou ip adresu, nebo se připojuje k síti na různých místech, přijde určitě krapet otravné neustále zjišťovat ip a přepisovat userprofile. Vytvořil jsem si proto malý skriptík, který získá aktuální ip adresu, vytvoří dočasný userprofile a nalinkuje ho do potřebného adresáře.
ZMĚNA (14.03.2008): Vylepšení získání ip adresy z ifconfig, podle rady Davida Watzke. V diskuzi přibyl originálnější způsob nastavení IP od Scarabeuse IV.
#!/bin/bash
# ulozi vsechny inet adr do pomocneho souboru
tmpadr="userprofile.txt"
LC_ALL=C ifconfig | grep 'inet addr:' > $tmpadr
# projde radky pomocneho souboru
cat "$tmpadr" | while read line; do
# vyoperuje adresu z aktualniho radku
line=${line%% *}
line=${line##*addr:}
echo $line
# pokud neni adresa default localhost mame nejpis tu co potrebujem
if [ "$line" != "127.0.0.1" ]; then
echo "ipaddress=${line}" > $tmpadr
ln $tmpadr "${HOME}/.loki/heroes3/userprofile.txt"
fi
done
# spusti heroes
./heroes3.dynamic
# odstrani pomocny soubor
rm "${HOME}/.loki/heroes3/userprofile.txt"
rm $tmpadr
Tiskni
Sdílej:
#!/bin/bash
ROUTA=$(sudo ip route |grep default|grep metric |awk -F' ' '{print $3}'|awk -F '.' '{print $1"."$2"."$3}')
IP=$(sudo ip addr |grep inet |grep -v 127.0.0.1 |awk -F' ' '{print $2}' |awk -F '/' '{print $1}'|grep ${ROUTA})
echo "ipadress=${IP}" > ~/.loki/heroes3/userprofile.txt
./heroes3.dynamic
da se to jeste zlepsit uz sem hodne unaven ;P
LC_ALL=C a pak budeš grepovat "addr" místo "adr", bude to fungovat na mnohem víc systémech. No a když tam dáš celou cestu k ifconfig, půjde to i pod uživatelem.
Jako správný Gentooista se grep|awk a podobným věcem vyhejbám jak čert kříži. A použil bych sed.
IP=($(/sbin/ip a s | sed -r -e '/inet/!d' \
-e '/127\.0\.0\.1/d' -e 's/.*inet(.*)brd.*/\1/'))
echo ${IP[0]/\/*}
ROUTA=$(/sbin/ip r | sed -r -e '/default/!d' \
-e 's/.* via (([0-9]+\.){3}).*/\1/')
IP=$(/sbin/ip a s | sed -r -e "/${ROUTA//./\\.}/"\!d \
-e "s/.*inet (${ROUTA//./\\.}[0-9]+).*/\1/")
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.