Portál AbcLinuxu, 30. dubna 2025 11:26
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.
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.