Shellscript

From wiki.3h.se

Jump to: navigation, search

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
Personal tools