![]() |
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| UNIX for Advanced & Expert Gebruikers Expert-to-Expert. Hier geavanceerde UNIX-, UNIX-commando's, Linux, Operating Systems, System Administration, programmering, Shell, Shell scripts, Solaris, Linux, HP-UX, AIX, OS X, BSD. |
Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
|
||||
| Draad | Thread Starter | Forum | Antwoorden | Last Post |
| Is Active Directory boven Linux authenticatie opties? - Zoeken Enterprise Linux | iBot | UNIX en Linux RSS Nieuws | 0 | 11-01-2007 02:00 |
| Is Active Directory boven Linux authenticatie opties? - Zoeken Enterprise Linux | iBot | UNIX en Linux RSS Nieuws | 0 | 10-29-2007 06:20 |
| noodzaak script voor vergrendeld en ongebruikte gebruikersaccounts in / export / home directory | krishna176 | SUN Solaris | 1 | 03-25-2007 03:45 PM |
| lijst van werkzame en vergrendeld OS rekeningen | Luft | UNIX voor Dummies Questions & Answers | 4 | 11-03-2005 12:33 |
| Gesloten van Mandrake 9.1 gebruikersaccount | alarmcall | Linux | 5 | 06-26-2004 02:38 PM |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
We hebben behoefte aan rapporten over de status van de gebruikers op diverse Unix-smaken te creëren.
We zouden graag een overzicht krijgen van het aantal verstreken, geblokkeerd, gehandicapten, actief, gepensioneerde en / of actieve / ontgrendeld worden op elk systeem, samen met de totale boekhouding. We begrijpen dat elke methode verschillend zouden zijn afhankelijk van het OS, beveiligingsinstellingen, NOS vs Lokaal en boekhoudkundige methoden. Maar zal graag willen weten hoe anderen doen dit? Zou bijvoorbeeld met behulp van OSF / Digital Unix, een manier zijn om de TCB en edauth hulpprogramma gebruiken om een aantal van deze gegevens op een vertrouwde systeem extract. Zijn er vergelijkbare methodes voor HP, Sun, en / of Linux? |
|
||||
|
Mijn eerste script is geschreven in een jaar geleden en dit script mij helpen om mijn account status te controleren in een groot aantal externe systemen eenvoudig. Dat was mijn eerste script. Niet goed en alleen voor uw referentie. Vereiste: 1. Krijg een krachtig script als volgt link. Het is een beroemde script in het HP forum - caljd.sh In mijn Linux machine, moet ik tot wijziging van de eerste lijn van #! / Usr / bin / sh naar #! / Bin / ksh http://forums1.itrc.hp.com/service/f...13969&ext\u003d.txt 2. File Host List In mijn env, ik heb twee bestanden. Heet hp.list en een ander is sun.list. Lijst formaat: host1 host2 host3 . . Een gastheer in een lijn 3. Mijn stom script. Dit script wordt uitgevoerd in de Linux-machine, maar geen controle op. Omdat in mijn env, Sun-server en HP-server zijn het meest belangrijk. Over het gebruik: zie mijn script introductie. Code:
#!/bin/ksh
##### Introduction #####
##
## This script is used for checking user login expiry date
## Get the password control files from remote according a host list
##### Requirement #####
##
## Root user can run this script only
## The following files should be existing in same directory
##
## chkpass.sh : Main Script - FTP file from remote hosts
## According different platform then has
## different formula.
##
## caljd.sh : Assistant Script - Source from public
## For calculating and converting date format.
##
## sun.list : host list of SUN platform that you wanted for checking,
## one row contains one hostname only
##
## hp.list : host list of HP platform that you wanted for checking,
## one row contains one hostname only
##### Usage #####
##
## Step 1) chkpass.sh [username] - Start to check the specified user
##
## Step 2) Login name & password - For ftp file transferring.
## (Root Privilege Account only)
## Result will be shown on screen and will be re-directed to a log also
##
trap 'print "Cancel the checking\n" ; exit 1' 2 3 9 15
USERNAME=$1
##### Check option, if no option then the default is current user #####
if [[ $# != 1 ]];
then
print "Check who?"
print "Usage: chkpass.sh [username]\n"
exit 1
else
CHKWHO=$USERNAME
fi
WORKPATH="$PWD"
SUNLIST="$WORKPATH/sun.list"
HPLIST="$WORKPATH/hp.list"
CHKLOG="$WORKPATH/${USERNAME}.result.log"
GET_UID=`id | awk -F"(" '{print$1}'`
UID=${GET_UID#*=}
if [[ ! $UID -eq 0 ]];
then
print
print "Pls. note that you need to provide"
print "root login and password for the script"
print
fi
if [[ -a $CHKLOG ]];
then
mv $CHKLOG ${CHKLOG}.old
fi
function code {
if grep -q -i "Not Connected" $FTPLOG;
then
print "\033[30;43m ${HOST}: \033[0m FTP connection failed\n" | tee -a $CHKLOG
elif grep -q -i "Login incorrect" $FTPLOG;
then
print "\033[30;43m ${HOST}: \033[0m Connection Failed. Incorrect login or password\n" | tee -a $CHKLOG
elif grep -q -i "No such file" $FTPLOG;
then
print "\033[30;43m ${HOST}: \033[0m Checking failed and it caused by one of following situations." | tee -a $CHKLOG
print "\033[30;43m ${HOST}: \033[0m 1. Make sure the existence of $CHKWHO in $HOST." | tee -a $CHKLOG
print "\033[30;43m ${HOST}: \033[0m 2. It doesn't a trusted system. No password setting for $CHKWHO.\n" | tee -a $CHKLOG
fi
}
if [[ ! -a $SUNLIST || ! -a $HPLIST ]];
then
print
print 'File Missing: "sun.list" & "hp.list"'
printf '%s\n%s\n%s\n%s\n\n' '#Example Content' host1 host2 host3
exit 1
fi
cat $SUNLIST $HPLIST > $WORKPATH/all.list
ALL_LIST="$WORKPATH/all.list"
print "Start to collect records from remote hosts"
read ftp_name?"Enter User Name: "
stty -echo
read ftp_pass?"Enter Password: "
stty echo
print
print
for list in `grep -v '#' $ALL_LIST`
do
HOST=$list
USER=$ftp_name
PASS=$ftp_pass
########################
##### SUN PLATFORM #####
########################
##### if - 1 #####
if grep -q $HOST $SUNLIST;
then
#This log is used for function "code"
FTPLOG="$WORKPATH/sunftp.log"
ftp -ivn << EOF > $FTPLOG 2>&1
open $HOST
user $USER $PASS
asc
cd /etc
get shadow
bye
EOF
##### if - 2 #####
if [[ -a $WORKPATH/shadow ]];
then
mv $WORKPATH/shadow $WORKPATH/${HOST}.shadow
##### if - 3 #####
if grep -q -w $CHKWHO $WORKPATH/${HOST}.shadow ;
then
typeset -i SEC_FR_70S DAY_FR_70S LAST_CHANGE LAST_CHANGE_SEC REMAINS
SEC_FR_70S=$(date +%s)
DAY_FR_70S=$((SEC_FR_70S/60/60/24))
LAST_CHANGE=$(awk -F: '/^'$CHKWHO':/ {print$3}' $WORKPATH/${HOST}.shadow)
ACC_PERIOD=$(awk -F: '/^'$CHKWHO':/ {print$5}' $WORKPATH/${HOST}.shadow)
((EXPIRATION=LAST_CHANGE+ACC_PERIOD))
((REMAINS=EXPIRATION-DAY_FR_70S))
##### if - 4 #####
if [[ $LAST_CHANGE = 0 || $ACC_PERIOD = 0 ]] || [[ -z $LAST_CHANGE || -z $ACC_PERIOD ]];
then
print "\033[37;42m ${HOST}: \033[0m No expiration date setting for $CHKWHO\n" | tee -a $CHKLOG
elif [[ $EXPIRATION -lt $DAY_FR_70S ]];
then
print "\033[37;41m ${HOST}: \033[0m $CHKWHO already expired\n" | tee -a $CHKLOG
else
EXP_JUL=$($WORKPATH/caljd.sh -n $REMAINS)
EXP_HUM=$($WORKPATH/caljd.sh $EXP_JUL)
MONTH=${EXP_HUM%% *}
DAY=$(echo $EXP_HUM | awk '{print$2}')
YEAR=${EXP_HUM##* }
print "\033[37;42m ${HOST}: \033[0m $CHKWHO will expire after $REMAINS days" | tee -a $CHKLOG
printf "%s\t%s/%s/%s\t%s\n\n" "EXPIRATION DATE:" $DAY $MONTH $YEAR "(DD/MM/YYYY)" | tee -a $CHKLOG
fi
##### if - 4 end #####
else
print "\033[30;43m ${HOST}: \033[0m $CHKWHO was not found\n" | tee -a $CHKLOG
fi
##### if - 3 end #####
rm $WORKPATH/${HOST}.shadow
else
code
fi
##### if - 2 end #####
rm $FTPLOG
else
#######################
##### HP PLATFORM #####
#######################
PREFIX=$(print $CHKWHO | cut -c 1)
#This log is used for function "code"
FTPLOG="$WORKPATH/hpftp.log"
ftp -ivn << EOF > $FTPLOG 2>&1
open $HOST
user $USER $PASS
asc
cd /tcb/files/auth/$PREFIX
get $CHKWHO
bye
EOF
##### if - 5 #####
if [[ -a $WORKPATH/$CHKWHO ]];
then
mv $WORKPATH/$CHKWHO $WORKPATH/${HOST}.${CHKWHO}
typeset -i SEC_FR_70S DAY_FR_70S CHG_DATE ACC_DATE EXPIRATION REMAINS
SEC_FR_70S=$(date +%s)
SUC_CHG=$(awk -F"u_succhg#" '/u_succhg/ {print$2}' $WORKPATH/${HOST}.${CHKWHO})
CHG_DATE=${SUC_CHG%%:*}
ACC_PERIOD=$(awk -F"u_exp#" '/u_exp/ {print$2}' $WORKPATH/${HOST}.${CHKWHO})
ACC_DATE=${ACC_PERIOD%%:*\\}
((EXPIRATION=CHG_DATE+ACC_DATE))
((REMAINS=EXPIRATION-SEC_FR_70S))
CHG_TO_DAY=$((REMAINS/60/60/24))
##### if - 6 #####
if [[ $CHG_DATE = 0 || $ACC_DATE = 0 ]] || [[ -z $CHG_DATE || -z $ACC_DATE ]] ;
then
print "\033[37;42m ${HOST}: \033[0m No expiration date setting for $CHKWHO\n" | tee -a $CHKLOG
elif [[ $EXPIRATION -lt $SEC_FR_70S ]];
then
print "\033[37;41m ${HOST}: \033[0m $CHKWHO already expired\n" | tee -a $CHKLOG
else
EXP_JUL=$($WORKPATH/caljd.sh -n $CHG_TO_DAY)
EXP_HUM=$($WORKPATH/caljd.sh $EXP_JUL)
MONTH=${EXP_HUM%% *}
DAY=$(echo $EXP_HUM | awk '{print$2}')
YEAR=${EXP_HUM##* }
print "\033[37;42m ${HOST}: \033[0m $CHKWHO will expire after $CHG_TO_DAY" days | tee -a $CHKLOG
printf "%s\t%s/%s/%s\t%s\n\n" "EXPIRATION DATE:" $DAY $MONTH $YEAR "(DD/MM/YYYY)" | tee -a $CHKLOG
fi
##### if - 6 end #####
rm $WORKPATH/${HOST}.${CHKWHO}
else
code
fi
##### if - 5 end #####
rm $FTPLOG
fi
##### if - 1 end #####
done
rm $ALL_LIST
print "Checking completed" | tee -a $CHKLOG
Laatst bewerkt door Optimus_P; op 01.28.2004 10:58.. |
|
||||
|
Mijn eerste script is geschreven in een jaar geleden en dit script mij helpen om mijn account status te controleren in een groot aantal externe systemen eenvoudig. Dat was mijn eerste script. Niet goed en alleen voor uw referentie. Vereiste: 1. Krijg een krachtig script als volgt link. Het is een beroemde script in het HP forum - caljd.sh In mijn Linux machine, moet ik tot wijziging van de eerste lijn van #! / Usr / bin / sh naar #! / Bin / ksh http://forums1.itrc.hp.com/service/f...13969&ext\u003d.txt 2. File Host List In mijn env, ik heb twee bestanden. Heet hp.list en een ander is sun.list. Lijst formaat: host1 host2 host3 . . Een gastheer in een lijn 3. Mijn stom script. Dit script wordt uitgevoerd in de Linux-machine, maar geen controle op. Omdat in mijn env, Sun-server en HP-server zijn het meest belangrijk. Over het gebruik: zie mijn script introductie. Code:
#!/bin/ksh
##### Introduction #####
##
## This script is used for checking user login expiry date
## Get the password control files from remote according a host list
##### Requirement #####
##
## Root user can run this script only
## The following files should be existing in same directory
##
## chkpass.sh : Main Script - FTP file from remote hosts
## According different platform then has
## different formula.
##
## caljd.sh : Assistant Script - Source from public
## For calculating and converting date format.
##
## sun.list : host list of SUN platform that you wanted for checking,
## one row contains one hostname only
##
## hp.list : host list of HP platform that you wanted for checking,
## one row contains one hostname only
##### Usage #####
##
## Step 1) chkpass.sh [username] - Start to check the specified user
##
## Step 2) Login name & password - For ftp file transferring.
## (Root Privilege Account only)
## Result will be shown on screen and will be re-directed to a log also
##
trap 'print "Cancel the checking\n" ; exit 1' 2 3 9 15
USERNAME=$1
##### Check option, if no option then the default is current user #####
if [[ $# != 1 ]];
then
print "Check who?"
print "Usage: chkpass.sh [username]\n"
exit 1
else
CHKWHO=$USERNAME
fi
WORKPATH="$PWD"
SUNLIST="$WORKPATH/sun.list"
HPLIST="$WORKPATH/hp.list"
CHKLOG="$WORKPATH/${USERNAME}.result.log"
GET_UID=`id | awk -F"(" '{print$1}'`
UID=${GET_UID#*=}
if [[ ! $UID -eq 0 ]];
then
print
print "Pls. note that you need to provide"
print "root login and password for the script"
print
fi
if [[ -a $CHKLOG ]];
then
mv $CHKLOG ${CHKLOG}.old
fi
function code {
if grep -q -i "Not Connected" $FTPLOG;
then
print "\033[30;43m ${HOST}: \033[0m FTP connection failed\n" | tee -a $CHKLOG
elif grep -q -i "Login incorrect" $FTPLOG;
then
print "\033[30;43m ${HOST}: \033[0m Connection Failed. Incorrect login or password\n" | tee -a $CHKLOG
elif grep -q -i "No such file" $FTPLOG;
then
print "\033[30;43m ${HOST}: \033[0m Checking failed and it caused by one of following situations." | tee -a $CHKLOG
print "\033[30;43m ${HOST}: \033[0m 1. Make sure the existence of $CHKWHO in $HOST." | tee -a $CHKLOG
print "\033[30;43m ${HOST}: \033[0m 2. It doesn't a trusted system. No password setting for $CHKWHO.\n" | tee -a $CHKLOG
fi
}
if [[ ! -a $SUNLIST || ! -a $HPLIST ]];
then
print
print 'File Missing: "sun.list" & "hp.list"'
printf '%s\n%s\n%s\n%s\n\n' '#Example Content' host1 host2 host3
exit 1
fi
cat $SUNLIST $HPLIST > $WORKPATH/all.list
ALL_LIST="$WORKPATH/all.list"
print "Start to collect records from remote hosts"
read ftp_name?"Enter User Name: "
stty -echo
read ftp_pass?"Enter Password: "
stty echo
print
print
for list in `grep -v '#' $ALL_LIST`
do
HOST=$list
USER=$ftp_name
PASS=$ftp_pass
########################
##### SUN PLATFORM #####
########################
##### if - 1 #####
if grep -q $HOST $SUNLIST;
then
#This log is used for function "code"
FTPLOG="$WORKPATH/sunftp.log"
ftp -ivn << EOF > $FTPLOG 2>&1
open $HOST
user $USER $PASS
asc
cd /etc
get shadow
bye
EOF
##### if - 2 #####
if [[ -a $WORKPATH/shadow ]];
then
mv $WORKPATH/shadow $WORKPATH/${HOST}.shadow
##### if - 3 #####
if grep -q -w $CHKWHO $WORKPATH/${HOST}.shadow ;
then
typeset -i SEC_FR_70S DAY_FR_70S LAST_CHANGE LAST_CHANGE_SEC REMAINS
SEC_FR_70S=$(date +%s)
DAY_FR_70S=$((SEC_FR_70S/60/60/24))
LAST_CHANGE=$(awk -F: '/^'$CHKWHO':/ {print$3}' $WORKPATH/${HOST}.shadow)
ACC_PERIOD=$(awk -F: '/^'$CHKWHO':/ {print$5}' $WORKPATH/${HOST}.shadow)
((EXPIRATION=LAST_CHANGE+ACC_PERIOD))
((REMAINS=EXPIRATION-DAY_FR_70S))
##### if - 4 #####
if [[ $LAST_CHANGE = 0 || $ACC_PERIOD = 0 ]] || [[ -z $LAST_CHANGE || -z $ACC_PERIOD ]];
then
print "\033[37;42m ${HOST}: \033[0m No expiration date setting for $CHKWHO\n" | tee -a $CHKLOG
elif [[ $EXPIRATION -lt $DAY_FR_70S ]];
then
print "\033[37;41m ${HOST}: \033[0m $CHKWHO already expired\n" | tee -a $CHKLOG
else
EXP_JUL=$($WORKPATH/caljd.sh -n $REMAINS)
EXP_HUM=$($WORKPATH/caljd.sh $EXP_JUL)
MONTH=${EXP_HUM%% *}
DAY=$(echo $EXP_HUM | awk '{print$2}')
YEAR=${EXP_HUM##* }
print "\033[37;42m ${HOST}: \033[0m $CHKWHO will expire after $REMAINS days" | tee -a $CHKLOG
printf "%s\t%s/%s/%s\t%s\n\n" "EXPIRATION DATE:" $DAY $MONTH $YEAR "(DD/MM/YYYY)" | tee -a $CHKLOG
fi
##### if - 4 end #####
else
print "\033[30;43m ${HOST}: \033[0m $CHKWHO was not found\n" | tee -a $CHKLOG
fi
##### if - 3 end #####
rm $WORKPATH/${HOST}.shadow
else
code
fi
##### if - 2 end #####
rm $FTPLOG
else
#######################
##### HP PLATFORM #####
#######################
PREFIX=$(print $CHKWHO | cut -c 1)
#This log is used for function "code"
FTPLOG="$WORKPATH/hpftp.log"
ftp -ivn << EOF > $FTPLOG 2>&1
open $HOST
user $USER $PASS
asc
cd /tcb/files/auth/$PREFIX
get $CHKWHO
bye
EOF
##### if - 5 #####
if [[ -a $WORKPATH/$CHKWHO ]];
then
mv $WORKPATH/$CHKWHO $WORKPATH/${HOST}.${CHKWHO}
typeset -i SEC_FR_70S DAY_FR_70S CHG_DATE ACC_DATE EXPIRATION REMAINS
SEC_FR_70S=$(date +%s)
SUC_CHG=$(awk -F"u_succhg#" '/u_succhg/ {print$2}' $WORKPATH/${HOST}.${CHKWHO})
CHG_DATE=${SUC_CHG%%:*}
ACC_PERIOD=$(awk -F"u_exp#" '/u_exp/ {print$2}' $WORKPATH/${HOST}.${CHKWHO})
ACC_DATE=${ACC_PERIOD%%:*\\}
((EXPIRATION=CHG_DATE+ACC_DATE))
((REMAINS=EXPIRATION-SEC_FR_70S))
CHG_TO_DAY=$((REMAINS/60/60/24))
##### if - 6 #####
if [[ $CHG_DATE = 0 || $ACC_DATE = 0 ]] || [[ -z $CHG_DATE || -z $ACC_DATE ]] ;
then
print "\033[37;42m ${HOST}: \033[0m No expiration date setting for $CHKWHO\n" | tee -a $CHKLOG
elif [[ $EXPIRATION -lt $SEC_FR_70S ]];
then
print "\033[37;41m ${HOST}: \033[0m $CHKWHO already expired\n" | tee -a $CHKLOG
else
EXP_JUL=$($WORKPATH/caljd.sh -n $CHG_TO_DAY)
EXP_HUM=$($WORKPATH/caljd.sh $EXP_JUL)
MONTH=${EXP_HUM%% *}
DAY=$(echo $EXP_HUM | awk '{print$2}')
YEAR=${EXP_HUM##* }
print "\033[37;42m ${HOST}: \033[0m $CHKWHO will expire after $CHG_TO_DAY" days | tee -a $CHKLOG
printf "%s\t%s/%s/%s\t%s\n\n" "EXPIRATION DATE:" $DAY $MONTH $YEAR "(DD/MM/YYYY)" | tee -a $CHKLOG
fi
##### if - 6 end #####
rm $WORKPATH/${HOST}.${CHKWHO}
else
code
fi
##### if - 5 end #####
rm $FTPLOG
fi
##### if - 1 end #####
done
rm $ALL_LIST
print "Checking completed" | tee -a $CHKLOG
Laatst bewerkt door Optimus_P; op 01.28.2004 10:58.. |
![]() |
| Bladwijzers |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|