Hjälp önskas för att skapa script eller dyl.

Tråden skapades och har fått 13 svar. Det senaste inlägget skrevs .
1

Någon scritguru som kan hjälpa mig? Behöver 2 script som:

1. Sparar ner till en och samma textfil när användare loggar in med användarnamn, datum och tid på en rad per inloggning.
2. Logga ur användare vid 3 klockslag: 06.15, 14.15 och 22.15 helst med en varnings-dialog först.

Bägge ska starta själva också.

Tacksam för hjälp.

Senast redigerat 2015-04-12 15:22
  • Medlem
  • Göteborg
  • 2015-04-12 23:20

Loggar in och ur var?
Det brukar finnas olika former av loggfiler där du kan hitta sådan information.

Ursprungligen av CekariYH:

1. Sparar ner till en och samma textfil när användare loggar in med användarnamn, datum och tid på en rad per inloggning.

Öppna en terminal och skriv kommandot last. Detta ger en logg över de senaste inloggningarna på datorn komplett med datum & klockslag samt hur länge de varit inloggade. Listan innehåller dock såväl "rena inloggningar" som öppnade kommandofönster, ssh inlogg o.dyl. Vill du bara se de som loggat in via inloggningsskärmen skriver du istället last | grep console i terminalen.

Inte riktigt vad du var ute efter, men det kanske funkar ändå?

Ursprungligen av CekariYH:

Någon scritguru som kan hjälpa mig? Behöver 2 script som:

1. Sparar ner till en och samma textfil när användare loggar in med användarnamn, datum och tid på en rad per inloggning.
2. Logga ur användare vid 3 klockslag: 06.15, 14.15 och 22.15 helst med en varnings-dialog först.

Bägge ska starta själva också.

Tacksam för hjälp.

Logg över inloggningar finns som sagt redan. Det sista borde i sin tur kunna lösas mha medföljande appen Automator och AppleScript genom att skapa ett självkörande program som stänger av fildelningen de tiderna och därefter slår på den igen, eller liknande.

  • Medlem
  • Karlskoga
  • 2015-04-13 08:00

För mej får jag inget vid filtrering på console. Men på ttys000.
Mac mini med 10.10.3, ansluter med BT tangentbord.

Ursprungligen av kenjon:

För mej får jag inget vid filtrering på console. Men på ttys000.
Mac mini med 10.10.3, ansluter med BT tangentbord.

Skumt! Jag får upp både ttysxxx och console i min logg.

Och grep console filtrerar fram enbart console inloggningarna.

Jag kör en iMac med 10.10.3.

BTW, siffran efter ttys ändras för varje terminalfönster man har uppe samtidigt så man ska nog bara filtrera på "ttys" för att vara på den säkra sidan.

Det är två olika problem, med olika delproblem, så därför också två olika lösningar:

För det första problemet skulle jag göra ett litet shell script som detta:

#!/bin/bash
DATE=$(date +%d-%m-%Y" "%H:%M:%S);
NAME=`osascript -e "long user name of (system info)"`
echo -e "$DATE\t$NAME" >>kasta.txt

Vad det gör är helt enkelt att det läser av datum/tid samt användarnamn, och sedan skriver ner det till en fil, med ett tab-tecken däremellan. Filens namn är i detta exempel "kasta.txt" och hamnar på skrivbordet/din hemmapp, men självklart kan du skriva in valfri sökväg och filnamn.

För att sedan få shell-scriptet att köras så måste du antingen spara det med filändelsen ".command" och lägga till det till användarens startobjekt. Nackdelen med den metoden är att ett terminalfönster öppnas, vilket kanske ser lite fult ut.

Ett bättre sätt, eftersom du även kan använda samma mekanism för det andra scriptet är att använda "launchd" dvs. Apples mer moderna alternativ för schemaläggning av uppgifter. Läs svar 3 i denna tråd på stackoverflow

http://stackoverflow.com/questions/6442364/ru...

När det gäller problem två krävs lite mer eftertanke. Eftersom du vill ha en dialogruta så skulle jag välja att göra det som ett AppleScript/AppleScript-program. I det bör du använda kommandot "display dialog" med parametern "giving up after", eftersom du måste anta att användaren kanske inte sitter vid datorn och att det ska funka ändå. Du måste således fånga de olika alternativen, att användaren klickar ok/avbryt/inte gör något val.

Nästa delproblem är att få detta att köras vid speciella tider. Det kan du göra på minst två sätt, antingen genom att schemalägga scriptet via launchd (googla) eller att spara scriptet som en stay-open app, med en idle handler, dvs. att scriptet körs kontinuerligt med visst intervall, kollar om klockslagen är något av de aktuella (egentligen inom ett visst intervall i anslutning till önska tidpunkt) och i så fall visas dialogrutan upp och scriptet gör sin grej. Du kan också schemalägga AppleScript via iCal, men jag har själv inte använt det så du får kolla upp lite närmare hur det funkar.

Ursprungligen av kladda:

Loggar in och ur var?
Det brukar finnas olika former av loggfiler där du kan hitta sådan information.

Dom som loggar in och ur på min server.
Är som sagt ny på detta med server och loggfiler, men lär mig så sakta, med betoning på sakta

Ursprungligen av HåkanE:

Öppna en terminal och skriv kommandot last. Detta ger en logg över de senaste inloggningarna på datorn komplett med datum & klockslag samt hur länge de varit inloggade. Listan innehåller dock såväl "rena inloggningar" som öppnade kommandofönster, ssh inlogg o.dyl. Vill du bara se de som loggat in via inloggningsskärmen skriver du istället last | grep console i terminalen.

Inte riktigt vad du var ute efter, men det kanske funkar ändå?

Jo, det skulle nog räcka för mig, ska testa när jag kommer hem. Tackar.

Ursprungligen av pushloop:

Logg över inloggningar finns som sagt redan. Det sista borde i sin tur kunna lösas mha medföljande appen Automator och AppleScript genom att skapa ett självkörande program som stänger av fildelningen de tiderna och därefter slår på den igen, eller liknande.

Satt och lekte med Automator igår men fattar inte riktigt hur man gör i allafall, är väl lite ding
Drog över "moduler" som jag trodde var dom jag skulle ha men fattar inte iaf hur det ska se ut tex att ha koll klockan och sedan när tiden för utloggning kommit, öppna en varnings dialog och sedan logga ut när användaren trycker ok typ.

Ursprungligen av Richard Rönnbäck:

Det är två olika problem, med olika delproblem, så därför också två olika lösningar:

För det första problemet skulle jag göra ett litet shell script som detta:

#!/bin/bash
DATE=$(date +%d-%m-%Y" "%H:%M:%S);
NAME=`osascript -e "long user name of (system info)"`
echo -e "$DATE\t$NAME" >>kasta.txt

Vad det gör är helt enkelt att det läser av datum/tid samt användarnamn, och sedan skriver ner det till en fil, med ett tab-tecken däremellan. Filens namn är i detta exempel "kasta.txt" och hamnar på skrivbordet/din hemmapp, men självklart kan du skriva in valfri sökväg och filnamn.

För att sedan få shell-scriptet att köras så måste du antingen spara det med filändelsen ".command" och lägga till det till användarens startobjekt. Nackdelen med den metoden är att ett terminalfönster öppnas, vilket kanske ser lite fult ut.

Ett bättre sätt, eftersom du även kan använda samma mekanism för det andra scriptet är att använda "launchd" dvs. Apples mer moderna alternativ för schemaläggning av uppgifter. Läs svar 3 i denna tråd på stackoverflow

http://stackoverflow.com/questions/6442364/ru...

När det gäller problem två krävs lite mer eftertanke. Eftersom du vill ha en dialogruta så skulle jag välja att göra det som ett AppleScript/AppleScript-program. I det bör du använda kommandot "display dialog" med parametern "giving up after", eftersom du måste anta att användaren kanske inte sitter vid datorn och att det ska funka ändå. Du måste således fånga de olika alternativen, att användaren klickar ok/avbryt/inte gör något val.

Nästa delproblem är att få detta att köras vid speciella tider. Det kan du göra på minst två sätt, antingen genom att schemalägga scriptet via launchd (googla) eller att spara scriptet som en stay-open app, med en idle handler, dvs. att scriptet körs kontinuerligt med visst intervall, kollar om klockslagen är något av de aktuella (egentligen inom ett visst intervall i anslutning till önska tidpunkt) och i så fall visas dialogrutan upp och scriptet gör sin grej. Du kan också schemalägga AppleScript via iCal, men jag har själv inte använt det så du får kolla upp lite närmare hur det funkar.

Jag är helt ny på detta så jag får prova ditt lilla script ovan och sedan prova att "överföra" det till "launchd" när jag lärt mig det.

Dialogruta är inte ett krav men skulle vara snyggare än att bara kasta ut användaren. Inga problem att denne inte sitter vid skärmen då nästa användare inte kan logga in förrän den förra loggat ut, och dom använder samma dator så då kan han logga ut den förra.

Ursprungligen av CekariYH:

Jag är helt ny på detta så jag får prova ditt lilla script ovan och sedan prova att "överföra" det till "launchd" när jag lärt mig det.

Dialogruta är inte ett krav men skulle vara snyggare än att bara kasta ut användaren. Inga problem att denne inte sitter vid skärmen då nästa användare inte kan logga in förrän den förra loggat ut, och dom använder samma dator så då kan han logga ut den förra.

För att testköra det första scriptet kan du använda den zippade filen jag bifogat till detta inlägg.

När det gäller det andra scriptet så måste du hantera en frånvarande användare, inte för användarens skull, utan för AppleScript's skull, eftersom applescript tolkar annars tolkar en obesvarad dialogruta som ett fel, varefter scriptet avbryts. Genom att hantera den situationen med "giving up"-parametern undviker man alltså felet. Det blir dessutom snyggt, eftersom du då kan styra hur länge användaren ska ha på sig att avbryta utloggningen, dvs. typ "Du kommer att loggas ut automatiskt om 30 sekunder. Tryck på OK för att logga ut genast, tryck på Avbryt för att avbryta utloggningen".

Ursprungligen av Richard Rönnbäck:

För att testköra det första scriptet kan du använda den zippade filen jag bifogat till detta inlägg.

När det gäller det andra scriptet så måste du hantera en frånvarande användare, inte för användarens skull, utan för AppleScript's skull, eftersom applescript tolkar annars tolkar en obesvarad dialogruta som ett fel, varefter scriptet avbryts. Genom att hantera den situationen med "giving up"-parametern undviker man alltså felet. Det blir dessutom snyggt, eftersom du då kan styra hur länge användaren ska ha på sig att avbryta utloggningen, dvs. typ "Du kommer att loggas ut automatiskt om 30 sekunder. Tryck på OK för att logga ut genast, tryck på Avbryt för att avbryta utloggningen".

Tack för zippen

Ingen risk med frånvarande användare, det finns alltid minst en där (lag-krav). Det är i vårar kontrollrum med 6 skiftlag så alltid bemannat och tiderna är satta till strax efter skiftavlösningen, så om bara scriptet håller sig i 5-10 minuter utan att balla ur så fixar det sig.

Ursprungligen av CekariYH:

Tack för zippen

Ingen risk med frånvarande användare, det finns alltid minst en där (lag-krav). Det är i vårar kontrollrum med 6 skiftlag så alltid bemannat och tiderna är satta till strax efter skiftavlösningen, så om bara scriptet håller sig i 5-10 minuter utan att balla ur så fixar det sig.

Nu är du väldigt envis. Du måste visa upp en dialogruta, och jag förklarar bara rätt sätt att använda kommandot för det. Det kommer att vara rätt om så kontrollrummet kryllar av användare

Ursprungligen av Richard Rönnbäck:

Nu är du väldigt envis. Du måste visa upp en dialogruta, och jag förklarar bara rätt sätt att använda kommandot för det. Det kommer att vara rätt om så kontrollrummet kryllar av användare

Haha, ja, du har rätt. Ska bara lära mig hur göra det andra scriptet

  • Medlem
  • Göteborg
  • 2015-04-13 11:23

Om det är vilka som loggat in mot din server hittar du det i loggarna i Server.app

1
Bevaka tråden