[Linux] Simpel bash script list users + pass expire date

Pagina: 1
Acties:
  • 90 views sinds 30-01-2008

  • Fr0zenFlame
  • Registratie: September 2003
  • Laatst online: 19-11-2024

Fr0zenFlame

LAN 'A Holic

Topicstarter
Hallo,

Ik heb zelf al een jaar of 2 een linux server draaien, eerst red hat en nu Gentoo. Echter op het gebied van scripting weet ik nog vrij weinig en nu moet ik voor school een bash script maken dat alle users laat zien en daarbij ook de datums waarop de passwords van de betrefende users verlopen.

Ik heb echter de hele middag al fora, google en irc afgezocht maar kan nog niks concreets vinden :( Een mannier die ik heb geprobeerd is "ls /home" maar dat is niet de manier en deze manier laat bovendien niet de verloop data van de passwords zien.

Wie kan me opweg helpen met iig het juiste commando voor het weergeven van alle users op het systeem + de afloop data voor de password. (Dus niet de "current user" alleen).

Alvast bedankt voor je tijd/hulp.

i7-6700K | Z170A XPOWER GAMING TITANIUM EDITION | InWin904 | 32GB Corsair Dominator Platinum | nVidia GeForce RTX2080 TI | Iiyama G-Master UWQH 34" | 2x 1TB Samsung SSD 980PRO | 1x 4TB Samsung 860EVO | Arctis 7 | SteelSeries Apex Pro | Logitech G502 Hero


Verwijderd

man 5 passwd

Ofwel, de file /etc/passwd bevat informatie die je nodig hebt. In die man page staat uitgelegd hoe de file in elkaar zit. Hopelijk helpt je dat genoeg.

[ Voor 5% gewijzigd door Verwijderd op 06-01-2006 19:50 . Reden: Half-afgeleid dingen getypt. ]


  • Farmerwood
  • Registratie: September 2004
  • Niet online
zo uit me hoofd kun je met:

getent passwd

de lijst van users ophalen. Filteren op de eerste dubbele punt en je hebt de gebruikers.

Voor dit 2de commando heb je rootrechten nodig:

chage -l username

levert o.a Password Expires.

Hier valt vast wel wat van te maken.. :)

  • Fr0zenFlame
  • Registratie: September 2003
  • Laatst online: 19-11-2024

Fr0zenFlame

LAN 'A Holic

Topicstarter
hmmm ik had er al even naar gekeken toevalig... maar met welk command kan ik alle usernames + verloop data laten zien?

cat passwd echo't gewoon alles uit het hele bestand in de shell :(

i7-6700K | Z170A XPOWER GAMING TITANIUM EDITION | InWin904 | 32GB Corsair Dominator Platinum | nVidia GeForce RTX2080 TI | Iiyama G-Master UWQH 34" | 2x 1TB Samsung SSD 980PRO | 1x 4TB Samsung 860EVO | Arctis 7 | SteelSeries Apex Pro | Logitech G502 Hero


  • Fr0zenFlame
  • Registratie: September 2003
  • Laatst online: 19-11-2024

Fr0zenFlame

LAN 'A Holic

Topicstarter
Farmerwood schreef op vrijdag 06 januari 2006 @ 19:53:
zo uit me hoofd kun je met:

getent passwd

de lijst van users ophalen. Filteren op de eerste dubbele punt en je hebt de gebruikers.

Voor dit 2de commando heb je rootrechten nodig:

chage -l username

levert o.a Password Expires.

Hier valt vast wel wat van te maken.. :)
Kijk nou kom ik ergens :D

Hehehe alleen hoe kan ik "change -l username" gebruiken voor niet 1 user maar voor alle users op het systeem? Dat is nl de bedoeling :)

tot nu toe iig bedankt :)

i7-6700K | Z170A XPOWER GAMING TITANIUM EDITION | InWin904 | 32GB Corsair Dominator Platinum | nVidia GeForce RTX2080 TI | Iiyama G-Master UWQH 34" | 2x 1TB Samsung SSD 980PRO | 1x 4TB Samsung 860EVO | Arctis 7 | SteelSeries Apex Pro | Logitech G502 Hero


  • TweakBoy
  • Registratie: Augustus 2001
  • Laatst online: 01:32

TweakBoy

---

Fr0zenFlame schreef op vrijdag 06 januari 2006 @ 19:59:
[...]


Kijk nou kom ik ergens :D

Hehehe alleen hoe kan ik "change -l username" gebruiken voor niet 1 user maar voor alle users op het systeem? Dat is nl de bedoeling :)

tot nu toe iig bedankt :)
maak een loop of zo en sla de informatie op in een array/dictionary..

sorteer dat en poep dat weer uit..

---


  • Fr0zenFlame
  • Registratie: September 2003
  • Laatst online: 19-11-2024

Fr0zenFlame

LAN 'A Holic

Topicstarter
Hehehe ik weet niet of dat me lukt in een bash script.. 't moet dan toch iets in de richting zijn van dit:


#!/bin/bash
# userlist.sh

PASSWORD_FILE=/etc/passwd
n=1 # User number

for name in $(awk 'BEGIN{FS=":"}{print $1}' < "$PASSWORD_FILE" )
# Field separator = : ^^^^^^
# Print first field ^^^^^^^^
# Get input from password file ^^^^^^^^^^^^^^^^^
do
echo "USER #$n = $name"
let "n += 1"
done


# USER #1 = root
# USER #2 = bin
# USER #3 = daemon
# ...
# USER #30 = bozo

exit 0

# Exercise:
# --------
# How is it that an ordinary user (or a script run by same)
#+ can read /etc/passwd?
# Isn't this a security hole? Why or why not?



alleen krijg deze nie aan de praat...

i7-6700K | Z170A XPOWER GAMING TITANIUM EDITION | InWin904 | 32GB Corsair Dominator Platinum | nVidia GeForce RTX2080 TI | Iiyama G-Master UWQH 34" | 2x 1TB Samsung SSD 980PRO | 1x 4TB Samsung 860EVO | Arctis 7 | SteelSeries Apex Pro | Logitech G502 Hero


Verwijderd

Even in een minuutje in elkaar gezet, maar zo iets zou wel moeten werken i guess :)
de output is alleen niet zo netjes

code:
1
2
3
4
5
for username in `cat /etc/passwd  | cut -d : -f 1`; 
do 
  grep $username /etc/shadow | cut -d : -f 5; 
  echo $username; 
done

  • Fr0zenFlame
  • Registratie: September 2003
  • Laatst online: 19-11-2024

Fr0zenFlame

LAN 'A Holic

Topicstarter
#!/bin/bash
#userlist.sh

PASSWORD_FILE=/etc/passwd
n=1

for name in $(awk 'BEGIN{FS=":"}{print $1}' < "$PASSWORD_FILE" )

do
echo "USER #$n = $name"
let "n += 1"
done

exit 0

Hmmm ik heb het bovenstaande letterlijk in mn tmp staan en gestart als ./tmp maar 't werkt niet :( Wat Flupzor poste heb ik ook getest maar lukt ook niet, alleen alsk het direct in de shell gooi (op de command line).

[ Voor 26% gewijzigd door Fr0zenFlame op 06-01-2006 21:24 ]

i7-6700K | Z170A XPOWER GAMING TITANIUM EDITION | InWin904 | 32GB Corsair Dominator Platinum | nVidia GeForce RTX2080 TI | Iiyama G-Master UWQH 34" | 2x 1TB Samsung SSD 980PRO | 1x 4TB Samsung 860EVO | Arctis 7 | SteelSeries Apex Pro | Logitech G502 Hero


  • zomertje
  • Registratie: Januari 2000
  • Laatst online: 03-02 16:28

zomertje

Barisax knorretje

Dat # in je file gaat ie niet leuk vinden he. Een # is normaal het begin van een commentaar regel :)

Edit, dat pikt ie dus wel via de commandline :o
Edit2, en ook via een scrippie
Edit3, Die van Flupzor doet het hier wel. (zo zou ik het ook geprobeerd hebben denk ik)

[ Voor 107% gewijzigd door zomertje op 06-01-2006 21:47 ]

het ultieme jaargetijde.... | #!/usr/bin/girl | Art prints and fun


  • Fr0zenFlame
  • Registratie: September 2003
  • Laatst online: 19-11-2024

Fr0zenFlame

LAN 'A Holic

Topicstarter
Hmm heb al van alles geprobeerd kom er nog nie echt uit... moet nl ook nog "chage -l $username" in het script weten te verwerken :s Iemand die een idee heeft?

i7-6700K | Z170A XPOWER GAMING TITANIUM EDITION | InWin904 | 32GB Corsair Dominator Platinum | nVidia GeForce RTX2080 TI | Iiyama G-Master UWQH 34" | 2x 1TB Samsung SSD 980PRO | 1x 4TB Samsung 860EVO | Arctis 7 | SteelSeries Apex Pro | Logitech G502 Hero


  • zomertje
  • Registratie: Januari 2000
  • Laatst online: 03-02 16:28

zomertje

Barisax knorretje

Eigenlijk mogen we je niet helpen met je huiswerk, het is niet voor niets 'jouw' huiswerk :) Je hebt hier al wat goede tips gekregen, maar nu denk ik dat je zelf verder zult moeten.

Ik ga dit topic dus dichtgooien.

het ultieme jaargetijde.... | #!/usr/bin/girl | Art prints and fun

Pagina: 1

Dit topic is gesloten.