Shellscript
From wiki.3h.se
Contents |
[edit] Emanuel's Chalmers login
#!/bin/sh # .nomadLogin.sh # Script waits until connected to any network. # If network is NOMAD, it then logges in with CID logger ".nomadLogin.sh: Running script..." ssid=`ioreg -l -n AirportDriver | grep APCurrentSSID | sed 's/^.*= "\(.*\)".*$/\1/; s/ /_/g'` count=0 while [ -z "$ssid" ] do logger ".nomadLogin.sh: No network found, searching..." ssid=`ioreg -l -n AirportDriver | grep APCurrentSSID | sed 's/^.*= "\(.*\)".*$/\1/; s/ /_/g'` ((count+=4)) if [ $count == 60 ] then logger ".nomadLogin.sh: No network found, exiting script." exit 1 else sleep 4 fi done count=0 logger ".nomadLogin.sh: Now connected to $ssid" if [ "$ssid" == "NOMAD" ] then p=`ping -c 1 https://login.nomad.chalmers.se | grep "1 packets received"` r="1 packets transmitted, 1 packets received, 0% packet loss" while [ "$p" != "$r" ] do logger ".nomadLogin.sh: Can't ping login.nomad.chalmers.se, retrying..." p=`ping -c 1 login.nomad.chalmers.se | grep "1 packets received"` ((count+=2)) if [ $count == 60 ] then logger ".nomadLogin.sh: Couldn't ping login.nomad.chalmers.se, exiting." exit 1 else sleep 2 fi done logger ".nomadLogin.sh: Ping successful to login.nomad.chalmers.se" curl --silent --data 'action=Login&org=Radius&login=USERNAME/net&password=PASSWORD' -o /dev/null https://login.nomad.chalmers.se logger ".nomadLogin.sh: Now logged in to $ssid" fi exit 0
[edit] Google Treasurehunt
En uppgift som gick ut på att summera 1a raden från alla pdf filer där filnamnet eller pathen innehåller bar
find . -name *pdf | grep bar | xargs cat -n | awk -F' ' '($1 == 1) {print "+" $2}' | xargs echo "0" | bc
[edit] ifconfig
Hämta IP från interface eth1
ifconfig eth1 | grep inet\ addr | grep -v inet6 | awk -F':' '{print $2}' | awk '{print $1}'
[edit] Host update
Ett litet shellscript för att uppdatera mina domännamn med rätt IP-adress var 10e minut. En smärtsam men nödvändig funktion för de som inte har råd att punga ut pengar på fast IP.
#!/bin/sh count=1 while [ $count -gt 0 ] do ipaddr=`curl -s dns.loopia.se/checkip/checkip.php | sed 's/^.*: \([^<]*\).*$/\1/'` HOSTS="3h.se www.3h.se futu-risk.com www.futu-risk.com isoftevo.com www.isoftevo.com" for myHost in $HOSTS do echo "Trying to update $myHost" curl -s --user 'user:pass' "https://dns.loopia.se/XDynDNSServer/XDynDNS.php?hostname=$myHost&myip=$ipaddr&wildcard=on" echo "\n" done echo "Waiting 10 minutes" sleep 10m done
[edit] IP-check
Här är ett annat litet script som jag skrev för att kunna testa en IP-range mot ping. Jag ville helt enkelt hitta min server och visste ungefär vilken IP den låg på.
#!/bin/sh echo -n "Enter IP address: "; read ip echo -n "How many IP addresses do you need: "; read count baseaddr="$(echo $ip | cut -d. -f1-3)" lsv="$(echo $ip | cut -d. -f4)" while [ $count -gt 0 ] do myHost="$baseaddr.$lsv" # ping respns=$(ping -w 1 -c 1 $myHost | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }') if [ $respns -gt 0 ]; then echo "$baseaddr.$lsv has response!!" fi lsv=$(( $lsv + 1 )) count=$(( $count - 1 )) done exit 0
[edit] Domäncheck
Ett litet mysigt script i ruby som kollar alla domäner med 2 tecken (på .se eller .com) efter vilka som är lediga. Datorn det körs på måste ha whois installerat bara.
#!/usr/bin/env ruby class DomainTest chars = ["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"] puts "What domain? (.se/.com)" top = gets.chomp! if top == ".se" then looking_for = "state" #om det är .se ska den försöka hitta state raden elsif top == ".com" then #om det är .com ska den försöka hitta Domain Name raden looking_for = "Domain\ Name" else top = ".se" looking_for = "state" #om inte .com eller .se är angivet ska den automatiskt leta efter .se end k = 0 while k < chars.length do i = 0 while i < chars.length do domain = chars[k] + chars[i] + top if %x{whois #{domain} | grep "#{looking_for}" } == "" then puts domain + " is available!" #om den inte hittade någon info är den ledig end i = i + 1 end k = k + 1 end end

