Knobelaufgabe für UNIX Könner (und Hilfe für einen N00b)

S

seikon

Jungspund
Hallo liebe Unix Gemeinde.
Ich darf mich mal als totaler Unix N00b outen, und hoffe hier wird mir geholfen. Und zwar versuche ich gerade ein kleines Programm zu schreiben mit dem ich einige Vorgänge automatisieren kann, die ich sonst immer mühsam von Hand eintippen muss.

Und zwar geht es hierbei um ein Netzwerk, bestehend aus 9 Clients. Alle Clients haben die selben Rechte. Es gibt also keinen Client mit Administratorrechten.
Bei den Usern die wir verwenden handelt es sich um netzwerkseitige Profile. Ich kann mich also auf jedem Client mit jedem User anmelden. So weit so gut. An 8 der Arbeitsplätze sitzen täglich Prüflinge und erstellen dort mit einem CAD Programm Files. Damit sich nachfolgende Prüflinge nicht die Files vom Vortag ziehen können, werden täglich die Verzeichnisse geleert. Die User speichern alle ihre Files in ein Verzeichnis, das bei uns /home/trext01-09 (die Nummer richtet sich nach dem User Log In den der Teilnehmer benutzt) heisst.
Damit ich nicht an jede Workstation einzeln rennen muss, logge ich mich übers Netzwerk auf den einzelnen Workstations ein, und lösche dann die Files. Ich benutze dafür den Befehl

exec login trextXX.

Danach fragt er ja logischerweise nach dem Passwort für diesen User. Auch das gebe ich von Hand ein. Dann kann ich mit dem rm Befehl die entsprechenden Files löschen. Das muss ich nun aber leider mühsam für jeden einzelnen User machen. Und genau diesen Vorgang möchte ich gerne mit einem kleinen *.sh File automatisieren. Sodass ich nur das Programm ausführe, und er sich dann der Reihe nach bei allen Usern einlogged und die Files (mit einer bestimmten Endung) löscht. Und ganz zum Schluss soll er dann automatisch noch ein anderes *.sh file starten, mitdem ich mir auf einen Schlag den Inhalt aller /home Verzeichnisse von allen Usern anzeigen lassen kann.
Leider weiss ich nicht recht, wie man das mit der User und Passwortabfrage realisieren kann. Also wenn jemand weiss, wie ich das schreiben kann immer her damit. Und bitte verständlich, ich kann Unix nämlich so gar nich :). Hier also noch mal, was ich automatisiert haben will in Kurzfassung:

z.B.

exec login trext02
#Dann soll er automatisch das Passwort für den User eingeben#
rm *.CAT*
exec login trext03
#Dann soll er automatisch das Passwort für den User eingeben#
rm *.CAT*
.
.
.
bis trext09 muss das so gehen. Und dann soll er eine Datei ausführen, die liste.sh heisst


Ich glaube (weiss es also nicht;)), dass er die Usereingabe und Passwortabfrage nicht so im Hintergrund machen kann. Es müsste also möglich sein, ihm zu sagen, dass er das im Terminalfenster einfach auf den Bildschirm schreiben soll, und dann quasi automatisch mit Enter bestätigen.
Ich hoffe jemand kann mir dabei helfen. Ich will dann einfach diese Datei ausführen, und dann soll er von alleine bei allen Usern das /home Verzeichnis von *.CAT* files leeren.



Danke schon mal. Ich hoffe es war einigermaßen verständlich

Gruß Tanja
 
Geht das nicht einfacher?!
1. Cronjob einrichten...
...oder...
2. die Dateien automatisch beim Login löschen (~/.bash_profile)...
...oder...
3. automatisch via ssh einloggen.

Mfg, Lord Kefir
 
Zuletzt bearbeitet:
Erm ich habe keine Ahnung ob das noch einfacher geht. Deswegen frag ich ja hier :D .
Also beim login löschen soll es auf gar keinen Fall. Das soll schon was ganz bewusstes sein, da auch mal Fremde sich an den Kisten einloggen, und es sollen keine Daten gelöscht werden, die noch nicht gesichert sind.
Das dumme ist halt, dass ich sonst nur Leserechte auf den anderen Usern habe. Um also Daten da zu löschen, muss man sich schon auf irgendeine Art und Weise via Netz einloggen. Ausserdem sollte es was sein, wo man mit Wildcards arbeiten kann. Er soll dann alles was *.CAT* ist löschen. Und das ganze eben automatisch. Er soll also alle User von 02-09 abarbeiten. Wenn du also was weisst, wie man das lösen kann (evtl auch einfacher) bitte posten. Aber mit Abkürzungen wie ssh kann ich leider nichts anfangen. Ich fange gerade erst an mit Unix. Bin schon froh, dass ich weiss wie man einen Prozess über Netzwerk auf einem anderen Client abschießt. Danach hörts dann aber mit meinem Wissen auch schon auf.
 
Eigentlich bietet sich für so etwas ein Cron-Daemon an - mit ihm lassen sich Befehle bzw. Scripte zeitgesteuert ausführen. Einfach auf jeder Maschine ein 'find /verzeichnis/ -iname "*.cat" -exec rm {} \;' ausführen und die Sache ist gegessen...

Von was für einem *nix reden wir hier eigentlich?!

Mfg, Lord Kefir
 
Keine Ahnung was das für ein Unix ist.

Und dieses Dings was du Beschreibst (wovon ich immer noch nich wirklich ne ahnung habe) muss ich auf jeder Workstation, also unter jedem Benutzer hinterlegen? In welchem Verzeichnis dann? Und kann ich das dann sozusagen von einer Alfa-Workstation aus starten, oder muss ich an jeden Platz rennen?
 
hi,

also ich würde sowas als root tun, oder steht dem was im wege?
 
Das sind alles Trainingsuser (auch mein Platz). Ich habe keine Adminrechte. Und es soll so sein, dass nur ein einziger User angemeldet sein muss.
Das einfachste wäre wohl, wenn man ein Skript schreiben kann, dass automatisch das im Terminal ausgibt, was ich normal von Hand eintippe. Sozusagen ein Schreib Bot.
 
Dann wuerde ich die Dateien einfach beim Login loeschen lassen. Dazu kann man die Befehle zum Loeschen einfach ans Ende der Konfiguration der Shell anhaengen und fertig. Evtl. noch ne kleine if-Bedingung drumrum basteln, die ueberprueft, ob der Login vormittags ist, damit nicht beim Login nach der Mittagspause die Dateien vom Vormittag geloescht werden. ;)
 
warum mit der kirche ums dorf?
wenn du nicht weisst was ein cronjob ist, dem kann abgeholfen werden: *klick*
wenn du keine rootrechte auf den kisten hast, dann wird das wohl auch seinen grund haben, ansonsten, sag dem admin, der auch rootrechte hat, er soll dir den cronjob einrichten.
is doch viel einfacher als da irgend ein rumgefrikkle zu machen, dass dann erst nicht richtig funktioniert ;)
 
Zuletzt bearbeitet:
Hallo,
erst mal sollte das euer Admin einrichten.
Ich würde auf den Clients sshd aktivieren. Und dann eine Passwort authentifizierung über Schlüssel. Howto: http://www.debianhowto.de/de:howtos:woody:ssh Abschnitt: Login ohne Kennwort-basierte Authentifizierung

Danach kannst Du einfach ein Script machen das eine SSH Verbindung zu dem Client aufbaut. (Das geht dann OHNE eine Passwortabfrage, dies ist dann schon in den SSH Keypaaren verfrühstückt)

Dann den obigen Find Befehl oder Deinen löschbefehl einbauen. Das ganze mit einer Schleife neun mal machen lassen. Fertig.

Ach ja, das kannst Du dann natürlich wie die Vorredner vorgeschlagen haben in einen Cronjob packen.

Gruss
maxix
 
Zuletzt bearbeitet:
Hallo zusammen,
wenn mich nicht alles täuscht kann man doch auch für die einzelnen User einen Cronjob in der jeweiligen Crontab einrichten. Somit muss da nicht der Admin einbezogen werden und es wäre ebenfalls eine saubere Lösung.
Gruss
mcas
 
Standardmäßig kann aber nur root Cronjobs einrichten...

Mfg, Lord Kefir
 
Das wiederum kommt ganz auf die Distro an. Bei den meisten Distros kann per Default erstmal jeder User seine eigenen Crons haben. Kannst ja gern mal tiger auf verschiedenen frisch installierten Distros laufen lassen. Der meckert dann naemlich gleich rum, dass jeder User Crons einrichten darf.
 
Mal andersherum aufgezaeumt: Warum mountet ihr die Userverzeichnisse nicht einfach per NFS von einem einzigen Rechner, der ein /export/home Verzeichnis mit folgender Struktur hat:

/export/home/trext01
/export/home/trext02
/export/home/trext03

Dazu muessen je nach Unix mit dem richtigen Tool bzw in die richtige Datei (wenns Solaris waere /etc/dfs/sharetab - sonst meistens /etc/exports) die Eintraege fuer die Clients angelegt werden, zB

/export/home/trext01 trext01(rw,all_squash,anonuid=150,anongid=100)
/export/home/trext02 trext02(rw,all_squash,anonuid=150,anongid=100)
.
...
/export/home/trext09 trext09(rw,all_squash,anonuid=150,anongid=100)


und beim reboot am naechsten Tag laeuft auf dem Server (das braucht kein Enterprise-System zu sein, ein aelterer Lunix-PC reicht ueberall hin )
ein Cronjob von root oder user 150, group 100, der die Verzeichnisse leert.

Ohne root/bzw Filesys-Admin Zugang ist _alles_ sinnlos, weil ein User, der minimale Hackertalente hat, sowohl die Shell anhalten, als auch den Cronjob loeschen, als auch die Login-Shell umgehen wird - ist ja auch direkt eine Aufforderung, wenn der das Script laufen sieht, das ihn vom blauen Nachmittag trennt :devil:
Verbessert mich, falls ich mich taeusche, aber in $ANY_FIRMA wird sich ein Admin, der das anders loest, allerhand Fragen bzgl Klammerbeutel und Puder gefallen lassen muessen.
 
Mal davon abgesehen, das die Gute Frau gesagt hat, das sie keine Admin rechte hat, musst du auf jedem Prüflings-Rechner erstmal einen NFSD starten und hast dann schonmal min. 2 Ports auf die sie lauschen.

Idealerweise sollte Sie aber dem Admin sagen was sie haben und machen will, damit dieser ein Script für sie erstellen kann.

Ohne zu wissen um was für ein Unix und Shell es geht mit befehlen und Fachbegriffen um sich zu werfen ist nicht sonderlich hilfreich
 

Ähnliche Themen

Windows clients können nicht mehr auf lange laufendes System zugreifen

CentOS - Samba Einrichtung will einfach nicht funktionieren

rsnapshot und ein Rechteproblem?

Rekursives Auslesen über 2 Ebenen und Ausführen von mehreren Befehlen

SSH per DSA Keyfile ohne Passwort

Zurück
Oben