Gå til innhold

Påloggingsskript som kjøres kun ved første pålogg


Anbefalte innlegg

Videoannonse
Annonse

Du kan legge et script /eventuelt link til et script i .bash_profile som kjører det du vil, for så å bytte ut .bash_profile med en fil som ikke inneholder scriptet du nettopp kjørte..

 

Bash programmering kan du lese mer om her

 

eks.

 

mkdir mappe

cp ny .bash_profile gammel gammel .bash_profile

Lenke til kommentar

hvis den skal lage noen mapper og lignende er det vel bare å teste om de eksisterer når scriptet kjøres?

 

EDIT: eventuelt legge mappene/filene i /etc/skel eller bruke et annet skeleton dir når brukerene lages?

Endret av Terrasque
Lenke til kommentar

Du behøver ikke et script for denne jobben. Filer du vil skal opprettes når en ny bruker legges til, legger du i /etc/skel-directoriet. Alt du legger der, plasseres i en ny brukers hjemmedirectory når du oppretter brukeren. Brukeren det er snakk om blir selvfølgelig eier av filene.

 

Dersom du faktisk vil at et script skal kjøres ved første innlogging (kan jo være du vil utføre noe annet), er følgende metode eneste jeg kan tenke meg i farten:

Du vet kanskje at ~/.bash_profile og ~/.bashrc er filer som eksekveres ved innlogging? (Disse filene plasseres forresten ut vha. /etc/skel). Det du kan gjøre, er å lage nye, spesielle versjoner av disse filene, som utfører den ønskelige handlingen, for så å slette seg selv og plassere inn den permanente versjonen av de to filene. Hvis du trenger hjelp med dette, så bare spør, så skal jeg komme med et eksempel.

Lenke til kommentar
Du behøver ikke et script for denne jobben. Filer du vil skal opprettes når en ny bruker legges til, legger du i /etc/skel-directoriet. Alt du legger der, plasseres i en ny brukers hjemmedirectory når du oppretter brukeren. Brukeren det er snakk om blir selvfølgelig eier av filene.

Tusen takk! :)

 

Men ett spørsmål... Kan jeg lage en fil som gjør at den filen som blir kopiert inn i brukerens hjemmeområde inneholder brukernavnet og fullt navn?

 

Og hva er de variablene? %USER? Og hva er fullt navn?

Lenke til kommentar

Ok, men prøv å hjelp meg, da. :)

 

Har ikke jobbet med bashskripting før. Hvordan lager man en fil?

 

 

$LOGNAME er ihvertfall loginnavn... Eller $USER

 

 

Og kan jeg bruke touch til å lage en fil og skrive i den samtidig?

Endret av Toolshed
Lenke til kommentar
Og kan jeg bruke touch til å lage en fil og skrive i den samtidig?

#!/bin/bash

cat > /dir/fil << "EOF"
masse masse tekst
som har linjeskift
som aldri slutter
...
men så en vakker dag har du ikke mer å skrive
så da er det bare å avslutte
kort og konsist:
EOF

echo "jess baby"

 

... ja du skjønner poenget. Det finnes en heftig bash-guide på nettet et sted, husker ikke hvor.

Lenke til kommentar
Men ett spørsmål... Kan jeg lage en fil som gjør at den filen som blir kopiert inn i brukerens hjemmeområde inneholder brukernavnet og fullt navn?

Med en enkel linje kan man finne hele navnet til brukeren (hvis du faktisk vil ha hele navnet):

 

grep $USER /etc/passwd | cut -d: -f5 | cut -d, -f1

 

/etc/passwd kan leses av alle som default (ufarlig så lenge passordet krypteres i egen fil).

 

edit: kanskje ikke "lettlest" men man bash har massevis av nyttig info

Endret av Cronius
Lenke til kommentar

Tusen takk, Cronius. Men jeg må også få skrevet brukernavnet, $LOGNAME eller $USER, inn i den filen, og hvis jeg bare skriver $USER inni der, kommer det som ren tekst.

 

 

EDIT: Så ikke at du hadde kommet med det siste svaret. Må prøve det.

 

 

Edit: Jeg får fremdeles ikke skrevet noen variabler inn i den filen, og kan jeg sette outputen av "grep $USER /etc/passwd | cut -d: -f5 | cut -d, -f1" inn i en variabel som heter $FULLNAME ?

 

 

Fikk til å sjekke om en fil finnes, men hvordan skriver jeg til den?

 

#Sjekker om fil.file finnes
echo "Sjekker om fil eksisterer"
if [ -e fil.file ];
then
echo "fil eksisterer, fortsetter med andre ting";
else
echo "Skriver fil"
cat > ~/bash/fil.file << "EOF"

Masse tekst

EOF

fi

Endret av Toolshed
Lenke til kommentar
Tusen takk, Cronius. Men jeg må også få skrevet brukernavnet, $LOGNAME eller $USER, inn i den filen, og hvis jeg bare skriver $USER inni der, kommer det som ren tekst.

Ser nå at cat ikke skriver ut variabler, så da må en litt mindre elegant løsning til:

 

#!/bin/bash

NAVN=`grep $USER /etc/passwd | cut -d: -f5 | cut -d, -f1`     # merk de sære høyre-apostroffene (shift-backslash og enter)

echo "tekst" > fil     # en hake/vinkel/pil (hva enn det heter) overskriver filen hvis den finnes
echo "mer tekst" >> fil     # to vinkler "legger til" (append) fila
echo "en lang setning skrevet til $USER, aka $NAVN" >> fil

cat >> fil << "SLUTT"
Fordi jeg ville ha masse tekst her dro jeg inn en liten cat på styrten
merk de to første vinklene = legger til
SLUTT

echo "også slår vi til med $NAVN nok en gang" >> fil

Lenke til kommentar

#!/bin/bash
# den første linja "må" du ha med: den forteller linux hvilket shell som skal kjøre skriptet
# (hvilket shell skriptet er skrevet for)

#Sjekker om fil.file finnes
echo "Sjekker om fil eksisterer"
if [ -e fil.file ];
then
echo "fil eksisterer, fortsetter med andre ting";
else
echo "Skriver fil"
mkdir ~/bash            # <-------------------------------     
cat > ~/bash/fil.file << "EOF"

Masse tekst

EOF

fi

mkdir -p ~/lang/dir/hvor/ingen/kataloger/finnes/fra/før funker også.

 

Advanced Bash-Scripting Guide er gull verdt. Eventuelt bruk man-sidene, de har alle svarene, om noe tunglest.

 

edit: logikken i skriptet over er noe fraværende ettersom den sjekker om fil.file eksisterer i cwd (current working directory) og hvis den ikke er det begynner den å lage ~/bash/fil.file ;)

Endret av Cronius
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...