Archief - probleem unix script

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

alleskan

Legacy Member
eigenlijk weet ik niet hoe ik eraan moet beginnen.

Ik moet een email file parse zodanig dat ik weet welk domein welke namen hebben.
Dan moet ik in de paswoordfile nakijken welke mensen ook een account hebben op dit systeem.
Dan moet ik vervolgens nakijken welk van die accounts zijn directory dicht staat en enkel lees, schrijf en uitvoerbare modus.
Dit moet ik plaatsen in een directory, ik moet ervoor zorgen dat als ik dit script meerdere malen uitver, ik geen fouten krijg over het feit dat directories al bestaan.
voor al degene die geen account hebben moet je een directory aanmaken in mijn homedirectory.

dJeez

Legacy Member
alleskan zei:
Ik moet een email file parse zodanig dat ik weet welk domein welke namen hebben.
Bedoel je dat je van een bestand dat email adressen bevat de naam en domeinnaam moet scheiden en ze dan gaan groeperen per domeinnaam?
Dus [email protected], [email protected], [email protected]
=> domain.tld = user1, user 2 / domain2.tld = user3

Dan moet ik in de paswoordfile nakijken welke mensen ook een account hebben op dit systeem.

Is het email adres (nu ja 't stuk voor de @domain.tld) dan gelijk aan de accountnaam?

Dan moet ik vervolgens nakijken welk van die accounts zijn directory dicht staat en enkel lees, schrijf en uitvoerbare modus.

Wat bedoel je met "dicht staan" van directories? Dat de owner en group de accountnaam zijn èn dat alle bestanden en folders enkel door die gebruiker kunnen gelezen, geschreven, uitgevoerd worden?

Dit moet ik plaatsen in een directory, ik moet ervoor zorgen dat als ik dit script meerdere malen uitver, ik geen fouten krijg over het feit dat directories al bestaan.
Wat is de "dit" die je moet plaatsen in een directory? En welke naam moet die directory hebben?

Kortom, liefst iets duidelijker graag...

Persoonlijk zou 'k opteren voor een Perl of PHP script om dit te gaan uitvoeren (in Bash zou 't mij nl. niet snel lukken :p).

SEMAG_TENELET

Legacy Member
alleskan zei:
eigenlijk weet ik niet hoe ik eraan moet beginnen.

Ik moet een email file parse zodanig dat ik weet welk domein welke namen hebben.
Dan moet ik in de paswoordfile nakijken welke mensen ook een account hebben op dit systeem.
Dan moet ik vervolgens nakijken welk van die accounts zijn directory dicht staat en enkel lees, schrijf en uitvoerbare modus.
Dit moet ik plaatsen in een directory, ik moet ervoor zorgen dat als ik dit script meerdere malen uitver, ik geen fouten krijg over het feit dat directories al bestaan.
voor al degene die geen account hebben moet je een directory aanmaken in mijn homedirectory.

euhm, ge beseft toch dat je dit niet in twee lijnen code kan uitvoeren he

dit is een volledig programmatje op zich, en de info die je geeft is niet voldoende om iets uit te werken

ik kan ui enkel aanraden om stap per stap proberen die zaken te verwerken, begin almaar met te bepalden in wat je dat gaat schrijven

meeneemchinees

Legacy Member
Ik heb de vraag niet helemaal begrepen, en veel ken ik niet van shell-scripting, maar ik prul er wel eens graag mee.
ik heb een simpel scriptje geschreven (waar de experts waarschijnlijk mee zullen lachen) dat het eerste deel toch al doet : van een file alle email adressen inlezen en per domain een file creëren met de users van dat domain :
Code:
#!/bin/bash
STR=`cat $1` # als parameter de filename met de email adressen meegeven
if [ ! -d domains ]; then
        mkdir domains # alle domain files komen in een subdirectory terecht
fi
for EMAIL in $STR
do
        USER=`echo $EMAIL | sed "s/@[a-z.0-9]*//"`
        DOMAIN=`echo $EMAIL | sed "s/[a-z.0-9_/-]*@//"`
        if [ -e domains/$DOMAIN ] ; then  # als de domain file bestaat
                if ! grep $USER domains/$DOMAIN >/dev/null ; then # als de user er nog niet in staat
                        echo $USER >> domains/$DOMAIN
                fi
        else # als de domain file nog niet bestaat
                echo $USER > domains/$DOMAIN
        fi
                                                                                
done
Hopelijk helpt de code in dit script om inspiratie te vinden voor de rest van uw probleem (greppen in de passwd file voor iedere user is zeer te vergelijken met mijn scriptje)

alleskan

Legacy Member
Zeer bedankt voor de al gegeven hulp.
Ik ga proberen wat duidelijker te zijn.

Dus :

1)Parse een email file zodanig dat je weet welk domein welke namen hebben

2)Kijk vervolgens in paswoord file na welke mensen ook een account hebben op dit systeem (let op: het domein dat geldt voor dit systeem is bijvoorbeeld ikke.be)

3)Kijk vervolgens na welk van die accounts zijn directory dicht staat en enkel lees, schrijf en uitvoerbare modus. Je moe enkel zoeken in de homedirectories van de accounts.

4)Zet dit verslag in een directory "verslag" (je moet ervoor zorgen dat als je dit script meerdere malen uitvoert, geen fouten krijgt over het feit dat directories al bestaan)

5) Voor al diegene die geen account hebben moet je een directory aanmaken in je homedirectory onder de subdirectory "anderen" die de naam van de account dragen. hier moet men opletten op dubbels

6) Als laatste moet je nakijken welke processen er lopen van deze persoon en geef je een overzicht (dit is zeker met het command ps)

De file ziet er als volgt uit :

Naam <[email protected]>; naa 2 <[email protected]>;

RumaNoV

Legacy Member
Vriend van mij moet juist hetzelfde script maken:

Parse een e-mail file zodanig dat je weet welk domein welke namen hebben.
Kijk vervolgens in paswoord file na welke mensen ook een account hebben op dit systeem (let op: het domein dat geldt voor dit systeem is honim.wenk.be)
Kijk vervolgens na welk van die accounts zijn directory dicht staat en enkel lees, schrijf en uitvoerbare modus. Je moet enkel zoeken in de homedirectories van de studenten.

Zet dit verslag in een directory verslag (ge moet ervoor zorgen dat als je dit script meerdere malen uitvoert, geen fouten krijgt over het feit dat directories al bestaan)
Voor al degene die geen account hebben moet je een directory aan maken in je homedirectory onder de sybdirectory “anderen” die de naam van de account dragen.
Let op dubbels!
Als laatste kijk je na welke processen er lopen van deze persoon en geef je overzicht

De file ziet er als volgt uit:

Naam <[email protected]> ; naam 2 <[email protected]>;

Dus maak zelf voldoende testmateriaal om te zien of dit lukt.

Als er iemand de oplossing weet of kan maken ik peis dat je hem heel erg gelukkig zal zijn. Deze opdracht moet vandaag voor 24u afzijn! Ik heb ook al een topic gepost op GOT, maar daar sluiten ze het gewoon...

Alvast bedankt!

PS: alleskan als jij de oplossing hebt gelieve mij iets te laten weten via pm ofzow, thx :bow:

meeneemchinees

Legacy Member
2)Kijk vervolgens in paswoord file na welke mensen ook een account hebben op dit systeem (let op: het domein dat geldt voor dit systeem is bijvoorbeeld ikke.be)
Eh ... bedoel je dat er per domain een password file bestaat? En staan die allemaal op dezelfde machine of moet je die remote verkrijgen? En als dat remote is, moeten die verslagen dan ook naar remote servers?

3)Kijk vervolgens na welk van die accounts zijn directory dicht staat en enkel lees, schrijf en uitvoerbare modus. Je moe enkel zoeken in de homedirectories van de accounts.
OK, ik snap nog altijd niet wat "directory dicht staat" betekent.

6) Als laatste moet je nakijken welke processen er lopen van deze persoon en geef je een overzicht (dit is zeker met het command ps)
moet dit ook in dat verslag komen?

RumanoVVV zei:
Vriend van mij moet juist hetzelfde script maken:
Eh ... is dit een soort huiswerk of wat? :wtf:
Wat nut heeft dat script? Als ik de reden weet, kunnen we misschien een eenvoudigere methode vinden om het doel te bereiken.

alleskan

Legacy Member
t'is gewoon een taak voor school;
dat van de processen moet ook gebeuren in met het scriptje

dJeez

Legacy Member
alleskan zei:
t'is gewoon een taak voor school;

Dan is het wel de bedoeling dat je zelf wat moeite doet ipv het hier te komen vragen. Hoe kan je nu in 's hemelsnaam iets bijleren als je de oplossing hier op een presenteerblaadje zou aangereikt krijgen? :doh:

Inch

Legacy Member
dJeez zei:
Dan is het wel de bedoeling dat je zelf wat moeite doet ipv het hier te komen vragen. Hoe kan je nu in 's hemelsnaam iets bijleren als je de oplossing hier op een presenteerblaadje zou aangereikt krijgen? :doh:

Ik had al zo'n voorgevoel.

can I? can I? can I? can I? can I? can I? can I? can I? can I?

RTFM!!!! :p

Neen serieus, ik heb dit jaar ook heel wat praktijklessen gehad. Je leert het meest door zaken zelf uit te zoeken en zelf te proberen.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan