Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #
- # Author: Dubravko Penezic, 2011
- #
- # Skripta za instalaciju skripte za autentikaciju putem 802.1x na mrezni
- # prikljucak.
- #
- # Ocekuje se da je na sustavu instalirana slijedeca programska podrska
- # ifconfig
- # wpa_supplicant
- # dhclient
- # awk
- # sed
- #
- # te da postoji barem jedan mrezni adapter za zicnu mrezu i da je isti
- # u funkciji
- #
- # verzija 1.0.1
- #
- # Nastala nadogradnjom i prilagodbom:
- #
- # eduroam configuration utility for Linux
- # Version 0.4-1
- # Written by Tomasz Wolniewicz ([email protected])
- # with contributions from Andrzej Angowski
- # German locale provided by Torsten Kersting
- # varijable
- ver="1.0.1"
- 8021x_CONF_PATH="/etc/8021x_wired"
- 8021x_SBIN_PATH="/sbin"
- 8021x_BIN_PATH="/usr/bin"
- # xterm oznake teksta bold
- if [ "$TERM" = "xterm" ] ; then
- bf="[1m";
- n="[0m";
- fi
- # functions
- # ispis teksta na ekran, lprint samo tekst, lprintln cijeli redak
- # s prelaskom u novi red
- #
- lprint() {
- echo -n $1;
- }
- lprintln() {
- lprint "$1"
- echo ""
- }
- # ask user for confirmation
- # the first argument is the user prompt
- # if the second argument is 0 then the first element of yes_no array
- # will be the default value prompted to the user
- ask() {
- yes=`lprint DA`
- no=`lprint NE`
- if [ $2 == "0" ]; then
- def=$yes
- else
- def=$no
- fi
- while true
- do
- read -p "${bf}${1} ${yes}/${no}? [${def}]:$n " answer
- if [ -z "$answer" ] ; then
- answer=${def}
- else
- answer=`echo $answer | awk '{ print toupper($0) }'`
- fi
- case "$answer" in
- ${yes})
- return 0
- ;;
- ${no})
- return 1
- ;;
- esac
- done
- }
- atn=`lprint "UPOZORENJE"`
- attention="${bf}${atn}!${n} "
- # Ispisivanje pozdravne poruke
- echo ""
- lprintln "8021x_config ${ver}"
- lprintln "================================"
- echo ""
- lprintln "Ova skripta obavlja instalaciju skripte i konfiguraciju klijenta"
- lprintln "za pristup zicnoj mrezi putem autentikacijske infrastrukture ${bf}802.1x$n"
- echo ""
- echo "------------------------------------------------------------------------"
- lprintln "${attention}Skripta podesava parametre koje mogu koristiti samo korisnici"
- lprintln "institucije ${bf}PMF Split$n cija korisnicka oznaka ima oblik"
- lprintln "<uid>@pmfst.hr ([email protected])"
- echo "------------------------------------------------------------------------"
- echo ""
- # Provjera parametara pri pozivanju skripte
- set -- `getopt ih $*`
- for i
- do
- case "$i" in
- -h)
- lprintn "Uporaba"; echo " $0 [-i]"
- echo ""
- echo ""
- exit 2 ;;
- -i)
- flag="i"; shift;;
- --)
- shift; break;;
- esac
- done
- user=`whoami`
- if [ "$user" != "root" ]; then
- echo -n "${attention} "
- lprintln "Ova skripta mora biti pokrenuta s root administrativnim ovlastima"
- exit
- fi
- if ! ask "`lprint 'Nastavak'`" 0 ; then exit; fi
- clear
- # locate ifconfig
- #
- if [ -x /sbin/ifconfig ]; then
- IWCONFIG="/sbin/ifconfig"
- elif [ -x /usr/sbin/ifconfig ]; then
- IWCONFIG="/usr/sbin/ifconfig"
- elif [ "$flag" ! = "-i" ] ; then
- lprint "Nemoguce pronaci"; echo " ifconfig"
- prompt=`lprint "unesite putanju do"`
- read -p "$prompt ifconfig: " IWCONFIG
- if [ ! -x $IWCONFIG ] ; then
- lprint "Nemoguce pronaci"; echo " $IWCONFIG";
- exit
- fi
- fi
- if [ "$flag" = "i" ] ; then
- read -p "ifconfig: [${IWCONFIG}] " iwcfg
- if [ "$iwcfg" ] ; then
- IWCONFIG=$iwcfg
- fi
- if [ ! -x $IWCONFIG ] ; then
- lprint "Nemoguce pronaci";echo " $IWCONFIG";
- exit
- fi
- fi
- # locate wired interface
- iface=`${IWCONFIG} 2>/dev/null | awk '/^[a-z]/ {print $1 }'`
- if [ -z "${iface}" ] ; then
- lprintln "Nije pronadjena niti jedan aktivni mrezni adapter za zicnu mrezu. Skripta prekida izvrsenje."
- exit
- fi
- # locate wpa_supplicant
- #
- if which wpa_supplicant 1>/dev/null 2>&1 ; then
- WPA_SUPPLICANT=`which wpa_supplicant`
- elif [ -x /sbin/wpa_supplicant ]; then
- WPA_SUPPLICANT="/sbin/wpa_supplicant"
- elif [ -x /usr/sbin/wpa_supplicant ]; then
- WPA_SUPPLICANT="/usr/sbin/wpa_supplicant"
- elif [ "$flag" != "-i" ] ; then
- while [ ! -x "$WPA_SUPPLICANT" -o "$WPA_SUPPLICANT" = "" ]
- do
- lprint "Nemoguce pronaci";echo " wpa_supplicant"
- prompt=`lprint "unesite putanju do"`
- read -p "$prompt wpa_supplicant: " WPA_SUPPLICANT
- done
- fi
- if [ "$flag" = "i" ] ; then
- read -p "wpa_supplicant: [${WPA_SUPPLICANT}] " iwcfg
- if [ "$iwcfg" ] ; then
- WPA_SUPPLICANT=$iwcfg
- fi
- while [ ! -x "$WPA_SUPPLICANT" -o "$WPA_SUPPLICANT" = "" ]
- do
- lprint 101 "Nemoguce pronaci"; echo " wpa_supplicant"
- read -p "$prompt wpa_supplicant: " WPA_SUPPLICANT
- done
- fi
- # locate wpa_cli
- #
- if which wpa_cli 1>/dev/null 2>&1 ; then
- WPA_CLI=`which wpa_cli`
- fi
- # select the wired interface
- #
- iface_count=`${IWCONFIG} 2>/dev/null | awk '/^[a-z]/ {print $1 }'| wc -l`
- if [ $iface_count -gt 1 ] ; then
- lprintln "Pronadjeni slijedeci mrezni adapteri za zicnu mrezu:"
- echo "$bf${iface}$n"
- else
- lprint "Pronadjen mrezni adapter za zicnu mrezu"
- echo ": $bf${iface}$n"
- fi
- if [ $iface_count -gt 1 ] ; then
- lprintln "molim odaberite jedan"
- ifc=""
- while [ -z $ifc ]
- do
- read -p "${n}interface: ${bf}" ifc
- done
- iface=$ifc
- elif [ "$flag" = "i" ] ; then
- read -p "adapter: [${iface}] " ifc
- if [ "$ifc" ] ; then
- iface=$ifc
- fi
- fi
- # select wired driver
- #
- driver="wired"
- if [ -x /sbin/dhcpcd ] ; then
- dhclient="/sbin/dhcpcd"
- fi
- if [ -x /sbin/dhclient ] ; then
- dhclient="/sbin/dhclient"
- fi
- if [ -x /sbin/pump ] ; then
- dhclient="/sbin/pump -i"
- fi
- # check for gksu
- GKSU=""
- if which gksu 1>/dev/null 2>&1 ; then
- GKSU=`which gksu`
- fi
- # check for kdesu
- KDESU=""
- if which kdesu 1>/dev/null 2>&1 ; then
- KDESU=`which kdesu`
- fi
- found=`lprint "pronadjen"`;
- echo ""
- lprintln "--------------------------------------------------------------------"
- lprint "Podesava 802.1x na"; echo " $bf$iface$n"
- echo " ${found} $bf$WPA_SUPPLICANT$n"
- echo " ${found} $bf$IWCONFIG$n"
- echo " ${found} $bf$dhclient$n"
- echo -n " "; lprint "podesavam drajver"; echo " $bf$driver$n"
- echo -n " "; lprint "kreiranje direktorija"; echo " $bf$8021x_CONF_PATH$n"
- echo -n " "; lprintln "kreiranje naredbe:"
- echo " $bf${8021x_SBIN_PATH}/8021x_wired$n"
- echo " $bf${8021x_BIN_PATH}/8021x_wired-start$n"
- echo " $bf${8021x_BIN_PATH}/8021x_wired-stop$n"
- if [ -n "$GKSU" -o -n "$KDESU" ] ; then
- echo -n " "; lprintln "i kreiranje pomocne naredbe:"
- echo " $bf${8021x_BIN_PATH}/x8021x_wired-start$n"
- echo " $bf${8021x_BIN_PATH}/x8021x_wired-stop$n"
- fi
- echo "--------------------------------------------------------------------"
- echo ""
- lprintln "Ako zelite promjeniti pojedine parametre, zaustavite instalaciju"
- lprintln "i pokrenite skriptu s paramterom -i"
- echo ""
- if ! ask "`lprint 'Nastavak'`" 1 ; then exit; fi
- if [ -z "$GKSU" -a -z "$KDESU" ]; then
- if which sudo 1>/dev/null 2>&1 ; then
- SUDO=`which sudo`
- prompt=`lprintln "zelite li koristiti ${n}sudo${bf} za pokretanje spajanja na 802.1x"`
- if ask "$prompt" 1; then
- lprint "Da, koristit cu"
- echo " ${bf}${SUDO}$n"
- else
- lprint "Da, koristit cu"
- echo " ${bf}su${n}"
- SUDO=""
- fi
- fi
- fi
- if [ -d "$8021x_CONF_PATH" ] ; then
- echo -n "${attention} "
- lprint "Direktorij"; echo -n " $8021x_CONF_PATH "; lprintln "postoji"
- lprintln "neke datoteke ce biti modificirane"
- if ! ask "`lprint 'Nastavak'`" 1 ; then exit; fi
- else
- lprint 20 "kreiranje"; echo " $8021x_CONF_PATH"
- if ! mkdir $8021x_CONF_PATH ; then
- lprint 21 "problem u kreiranju direktorija"; echo " $8021x_CONF_PATH"
- exit
- fi
- fi
- PASSWORD="a"
- PASSWORD1="b"
- read -p "${prompt}: " USER
- while [ "$PASSWORD" != "$PASSWORD1" ]
- do
- prompt=`lprint "unesite svoju lozinku"`
- read -s -r -p "${prompt}: " PASSWORD
- echo ""
- prompt=`lprint "ponovno unesite svoju lozinku"`
- read -s -r -p "${prompt}: " PASSWORD1
- echo ""
- if [ "$PASSWORD" != "$PASSWORD1" ] ; then
- lprint "unesene lozinke se ne podudaraju"
- fi
- done
- eap="TTLS
- password=\"${PASSWORD}\"
- phase2=\"auth=PAP\""
- echo "ctrl_interface=/var/run/wpa_supplicant
- network={
- key_mgmt=IEEE8021X
- ca_cert=\"${8021x_CONF_PATH}/8021x_wired_pmfst.hr_CA.pem\"
- subject_match=\"freeradius.pmfst.hr\"
- identity=\"${USER}\"
- eapol_flags=0
- eap=$eap
- }
- " > ${8021x_CONF_PATH}/wpa_supplicant.conf
- #INCLUDE_CERT
- chown root ${8021x_CONF_PATH}/wpa_supplicant.conf
- chmod 600 ${8021x_CONF_PATH}/wpa_supplicant.conf
- starting=`lprintln "pokretanje mrezne povezanosti"`
- stopping=`lprintln "zaustavljanje mrezne povezanosti"`
- waiting=`lprintln "cekanje na povezivanje"`
- connected=`lprintln "povezano na"`
- restarting=`lprintln "restartanje"`
- assinging_ip=`lprintln "podesavanje IP adrese"`
- msg=`lprint "Koristenje"`
- echo "#!/bin/sh
- WPA_SUPPLICANT=\"$WPA_SUPPLICANT\"" > ${8021x_SBIN_PATH}/8021x_wired
- if [ "$WPA_CLI" ] ; then
- echo "WPA_CLI=\"$WPA_CLI\"" >> ${8021x_SBIN_PATH}/8021x_wired
- fi
- echo "DRIVER=\"${driver}\"
- WPA_CONF=\"${8021x_CONF_PATH}/wpa_supplicant.conf\"
- DHCPD=\"${dhclient}\"
- INTERFACE=\"${iface}\"
- REAUTH_TIMEOUT=\"120\"
- # end of configuration section
- dhclient=\`basename \$DHCPD\`
- case \"\$1\" in
- start)
- echo \"$starting \${INTERFACE}\"
- pkill wpa_supplicant
- kill \`ps -ef | awk \"/\$dhclient/ && /${iface}/ && ! /awk/ {print \$2}\"\` 1>/dev/null 2>&1
- \${WPA_SUPPLICANT} -B -D \${DRIVER} -c \${WPA_CONF} -i \${INTERFACE} -P /var/run/wpa_supplicant.pid 1>/dev/null 2>&1
- if [ \"\$WPA_CLI\" ] ; then
- i=1
- echo \"$waiting\"
- while ! \$WPA_CLI status | grep -q AUTHENTICATED ; do
- sleep 1
- i=\`expr \$i + 1\`
- if [ \$i -gt 40 ] ; then
- echo \"$restarting wpa_supplicant\"
- echo \"$waiting\"
- pkill wpa_supplicant
- sleep 1
- \${WPA_SUPPLICANT} -B -D \${DRIVER} -c \${WPA_CONF} -i \${INTERFACE} -P /var/run/wpa_supplicant.pid 1>/dev/null 2>&1
- i=1
- sleep 1
- fi
- done
- echo \"$connected 802.1x\"
- else
- sleep 10
- fi
- echo \"$assinging_ip\"
- \${DHCPD} \${INTERFACE}
- ;;
- stop)
- echo \"$stopping \${INTERFACE}\"
- pkill wpa_supplicant
- kill \`ps -ef | awk \"/\$dhclient/ && /${iface}/ && ! /awk/ {print \$2}\"\` 1>/dev/null 2>&1
- ;;
- *)
- echo \"$msg \$0 {start|stop}\"
- exit 1
- ;;
- esac
- " >> ${8021x_SBIN_PATH}/8021x_wired
- chmod 755 ${8021x_SBIN_PATH}/8021x_wired
- if [ -n "$GKSU" -o -n "$KDESU" ]; then
- msg=`lprint "izvrseno"; echo -n " ${8021x_SBIN_PATH}/8021x_wired start "; lprint "kao root"`
- echo "#!/bin/sh
- xterm -geometry 80x5 -T '8021x_wired start' -e '${8021x_SBIN_PATH}/8021x_wired start; sleep 2'
- " > ${8021x_BIN_PATH}/x8021x_wired-start
- echo "#!/bin/sh
- xterm -geometry 80x5 -T '8021x_wired stop' -e '${8021x_SBIN_PATH}/8021x_wired stop; sleep 2'
- " > ${8021x_BIN_PATH}/x8021x_wired-stop
- chmod 755 ${8021x_BIN_PATH}/x8021x_wired-*
- echo "#!/bin/sh
- if [ -n \"\$DISPLAY\" ] ; then
- if env | grep -q GNOME ; then
- if which gksu 1>/dev/null 2>&1 ; then
- SSSU=\`which gksu\`
- fi
- fi
- if env | grep -q KDE ; then
- if which kdesu 1>/dev/null 2>&1 ; then
- SSSU=\`which kdesu\`
- fi
- fi
- if [ -n \"\$SSSU\" ] ; then
- \$SSSU x8021x_wired-start 1>/dev/null 2>&1
- else
- echo $msg
- fi
- else
- echo $msg
- fi
- " > ${8021x_BIN_PATH}/8021x_wired-start
- msg=`lprint "pokrenuto"; echo -n " ${8021x_SBIN_PATH}/8021x_wired stop "; lprint "kao root"`
- echo "#!/bin/sh
- if [ -n \"\$DISPLAY\" ] ; then
- if env | grep -q GNOME ; then
- if which gksu 1>/dev/null 2>&1 ; then
- SSSU=\`which gksu\`
- fi
- fi
- if env | grep -q KDE ; then
- if which kdesu 1>/dev/null 2>&1 ; then
- SSSU=\`which kdesu\`
- fi
- fi
- if [ -n \"\$SSSU\" ] ; then
- \$SSSU x8021x_wired-stop 1>/dev/null 2>&1
- else
- echo $msg
- fi
- else
- echo $msg
- fi
- " > ${8021x_BIN_PATH}/8021x_wired-stop
- else
- if [ -n "$SUDO" ]; then
- echo "#!/bin/sh
- if [ -n \"\$DISPLAY\" ] ; then
- xterm -geometry 80x4 -T '8021x_wired start' -e \"${SUDO} ${8021x_SBIN_PATH}/8021x_wired start\"
- else
- ${SUDO} ${8021x_SBIN_PATH}/8021x_wired start
- fi
- " > ${8021x_BIN_PATH}/8021x_wired-start
- echo "#!/bin/sh
- if [ -n \"\$DISPLAY\" ] ; then
- xterm -geometry 80x4 -T '8021x_wired stop' -e \"${SUDO} ${8021x_SBIN_PATH}/8021x_wired stop\"
- else
- ${SUDO} ${8021x_SBIN_PATH}/8021x_wired stop
- fi
- " > ${8021x_BIN_PATH}/8021x_wired-stop
- else
- echo "#!/bin/sh
- if [ -n \"\$DISPLAY\" ] ; then
- xterm -geometry 80x4 -T '8021x_wired start' -e \"su -c '${8021x_SBIN_PATH}/8021x_wired start'\"
- else
- su -c '${8021x_SBIN_PATH}/8021x_wired start'
- fi
- " > ${8021x_BIN_PATH}/8021x_wired-start
- echo "#!/bin/sh
- if [ -n \"\$DISPLAY\" ] ; then
- xterm -geometry 80x4 -T '8021x_wired stop' -e \"su -c '${8021x_SBIN_PATH}/8021x_wired stop'\"
- else
- su -c '${8021x_SBIN_PATH}/8021x_wired stop'
- fi
- " > ${8021x_BIN_PATH}/8021x_wired-stop
- fi
- fi
- chmod 755 ${8021x_BIN_PATH}/8021x_wired-*
- cp 8021x_wired_pmfst.hr_CA.pem ${8021x_CONF_PATH}
- echo ""
- lprintln "${bf}Uspjesno dovrseno konfiguriranje$n"
- echo ""
- echo ""
- lprintln "${bf}Koristenje${n}"
- echo "------------------------"
- echo ""
- lprint "Pokretanje mrezne povezanosti"; echo " ${bf}8021x_wired-start${n}"
- lprint "Zaustavljanje mrezne povezanosti"; echo " ${bf}8021x_wired-stop${n}"
- echo ""
Advertisement
Add Comment
Please, Sign In to add comment