pgdx Skrevet 2. juni 2004 Del Skrevet 2. juni 2004 Hei. Jeg skal ha et påloggingsskript som skal lage noen mapper og noen filer, men det skal kun kjøres ved første pålogging. Hvordan kan det gjøres? Lenke til kommentar
Klette Skrevet 2. juni 2004 Del Skrevet 2. juni 2004 en litt stygg metode kan jo være å få scriptet å skrive en .crap fil i home mappa til brukeren. Hvis den allerede eksisterer, kjøres ikke resten av scriptet Lenke til kommentar
Os|r|s Skrevet 2. juni 2004 Del Skrevet 2. juni 2004 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
Melfacion Skrevet 2. juni 2004 Del Skrevet 2. juni 2004 kan du ikke få den til å opprette en fil når den kjøres? noe sånn som dette: if exists "firsttime" ( ) else (gjør ting) veit ikke hvilket språk det skrives i, men tanken er vel god? Lenke til kommentar
Terrasque Skrevet 2. juni 2004 Del Skrevet 2. juni 2004 (endret) 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 2. juni 2004 av Terrasque Lenke til kommentar
gspr Skrevet 2. juni 2004 Del Skrevet 2. juni 2004 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
pgdx Skrevet 2. juni 2004 Forfatter Del Skrevet 2. juni 2004 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
pgdx Skrevet 2. juni 2004 Forfatter Del Skrevet 2. juni 2004 (endret) 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 2. juni 2004 av Toolshed Lenke til kommentar
pgdx Skrevet 2. juni 2004 Forfatter Del Skrevet 2. juni 2004 (endret) *dual posting* Endret 2. juni 2004 av Toolshed Lenke til kommentar
Cronius Skrevet 2. juni 2004 Del Skrevet 2. juni 2004 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
Paull Skrevet 2. juni 2004 Del Skrevet 2. juni 2004 etter å ha opprettet brukeren kan du kanskje ta en "finger $LOGNAME | grep Name >> filnavn" ? Evt. formatere litt mer etter å ha grep'et ut linja.. Lenke til kommentar
Cronius Skrevet 2. juni 2004 Del Skrevet 2. juni 2004 (endret) 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 2. juni 2004 av Cronius Lenke til kommentar
pgdx Skrevet 2. juni 2004 Forfatter Del Skrevet 2. juni 2004 (endret) 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 2. juni 2004 av Toolshed Lenke til kommentar
kyrsjo Skrevet 2. juni 2004 Del Skrevet 2. juni 2004 touch lager en ny blank fil (eller oppdaterer datoen på en gammel) Lenke til kommentar
Cronius Skrevet 2. juni 2004 Del Skrevet 2. juni 2004 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
Cronius Skrevet 2. juni 2004 Del Skrevet 2. juni 2004 (endret) #!/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 2. juni 2004 av Cronius Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå