| skrypt zmieniajacy timezone
#!/bin/bash
while read line; do #uzyje petli while zeby zczytac wiersze z pliku lista
i=$(echo $line | awk '{print $1}')
j=$(echo $line | awk '{print $2}')
echo -e "\r"
echo $i
echo -e "\r"
ssh -n $i "sudo su -c \"
/etc/init.d/ntpd stop
cp -p /etc/sysconfig/clock /etc/sysconfig/clock_backup
sed -i -e 's/^ZONE=.*/ZONE=\\\"$j\\\"/g' /etc/sysconfig/clock
mv /etc/localtime /etc/localtime_backup
ln -s /usr/share/zoneinfo/$j /etc/localtime
/etc/init.d/ntpd start \""
done
|
operatory logiczne dla testu
test -e - plik istnieje
test -d/f - obiekt jest folderem/plikiem
test -lt/le/eq/ge/gt - wartosc jest mniejsza/mniejsza lub rowna/rowna/wieksza lub rowna/wieksza
test -r/w/x - plik ma prawo odczytu/zapisu/wykonywania
|| - jezeli poprzedni jest falszywy to
&& - jezeli poprzedni jest prawdziwy to
$? - wynik poprzedniej komendy (0 oznacza pozytywny) test -e /etc/redhat-release && echo "RH" || echo "SUSE"
|  |
| skladnia sed
sed -e '1,2d' /etc/sysconfig/clock
sed -n -e '1,2p' /etc/sysconfig/block
sed -e'/^#/d' /etc/sysconfig/clock # regexp
sed -n -e '/^[abc].*/p' /etc/passwd # regexp
sed -n -e '/The/,/system-config-date/p' /etc/sysconfig/clock
sed -e '1,10s/bin/bash/g' /etc/passwd
sed -e 's:<[^>]*>::g' index.html
sed -e 's/.*/wpis::: &/g' /etc/passwd
sed -e 's/\(system\)-\(config\)-\(date\)/\3-\2-\1/g' /etc/sysconfig/clock
; sluzy do oddzielania komend
albo 1,20{
s/[Ll]inux/GNU\/Linux/g
s/samba/Samba/g
s/posix/POSIX/g
}
regexp
^/$ Oznacza początek/koniec wiersza
./* Oznacza pojedynczy znak/Oznacza zero lub więcej wystąpień poprzedniego znaku
[ ]/[^a] Wszystkie znaki pomiędzy [ i ] / wszystkie znaki poza a
sed -e 's/[[:space:]]//g' /etc/sysconfig/clock
| skladnia skryptu expect
#!/usr/bin/
spawn su root
expect "rd:"
send "xxx\r";
interact
| test ssh z podana lista serwer/login
#!/bin/bash
while read line
do
i=$(echo $line | awk '{print $1}') ## server
j=$(echo $line | awk '{print $2}') ## user
ssh -n -o NumberOfPasswordPrompts=1 -o PubkeyAuthentication=no $j@$i
if [ $(echo $?) == "0" ]; then
echo "$j;$i;connexion OK"
else
echo "$j;$i;connexion FAILED"
fi
done < liste_des_serveurs > resultat_`date +%d%m%Y`.csv
|
|
#!/bin/bash
for j in $(cat); do
echo $j
liste=$(ssh $j "df -Plm | sed -n '2,/END/p' | awk '{print \$2}'")
#echo $liste
sum=0; for i in $(echo $liste); do let sum=$sum+$i; done ; echo $sum
done
#!/bin/bash
for j in $(cat); do
echo $j
dfcmd=$(ssh $j df -Plm | sed -n -e '2,/END/p' | awk '{print $2}')
sum=$(echo $dfcmd | sed 's/ /+/g')
echo $((sum))
#"echo \$((`df -Plm | sed -n -e '2,/END/p' | awk '{print \$2}' | xargs | sed 's/ /+/g'`))"
done
| Zapobieganie expire hasla
#!/bin/bash
# Data wygasniecia hasla
A=`chage -l root | grep "Password expires" | awk -F": " '{print $2}'`
# Data wygasniecia hasla w dniach od 1970-01-01
A1=$(( (`date --date="$A" +"%s"`) / 86400))
# Data dzisiaj
C=`date --date="today"`
# Data dzisiejsza w dniach od 1970-01-01
C1=$(( (`date --date "today" +"%s"`) / 86400 ))
echo "data wygasniecia w dniach od 1970-01-01"
echo $A1
echo $A
echo "Data dzisiejsza w dniach od 1970-01-01"
echo $C1
echo $C
echo "zmiana hasla bedzie"
echo "$((A1-15))"
if [[ $C11 -ge $(($A1-15)) ]]; then
echo "nastapi zmiania "Last password change""
chage -d `date +"%Y-%m-%d"` root
else
echo "jeszcze nie pora na zmiane hasla"
fi
|