PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : WIN-Benutzer unter Linux erkennen/einrichten



BlackBlade
15.12.04, 12:14
Moin,

benutze ein Windows-Netzwerk mit Win-PDC und Benutzerverwaltung. Nun habe ich mittels Samba-nen Linuxrechner mit eingebunden. Alles kein Thema...Linux Rechner ist im Win-Netz zu sehen und ich kann auch auf freigegebene Sachen zugreifen.
Einen PDF-Drucker habe ich auch eingerichtet.

Nun aber zu meinem Problem...ich möchte natürlich die Rechte besser spezifizieren für die einzelnen Nutzer. Anmelden tun sie sich an Win-Clients. Jetzt wäre es ja gut, wenn Linux erkennt, welcher Nutzer sich angemeldet hat und nen PDF drucken möchte. Wenn ich das nämlich weiß, kann ich ihm das PDF als Mail zuschicken.

Wie kann ich also die Win-Nutzer auf den Linuxrechner übernehmen? Nicht total, denn der Win-Server soll noch weiterhin die Verwaltung der Nutzer übernehmen. Geht mir nur darum, daß ich die Win-Nutzer erkenne

Thx & Greetings

BlackBlade

muc
15.12.04, 12:27
Also ich würde erstmal so vorgehen:

1. Samba Server in die Windows Domäne aufnehmen
2. Die Authentifizierung über die Domäne durchführen (d.h. jeder User muss sich erstmal authentifizieren, damit er auf den Drucker zugreifen kann).

Nun solltest du über ein kleines Script herausbekommen können, wer drucken will und ihm die Datei als pdf schicken können.

greetz
muc

BlackBlade
15.12.04, 13:20
Hi, danke für die schnelle Antwort

Punkt 1. hab ich bereits, das funktioniert
Punkt 2. werd ich dann mal in Angriff nehmen

und mit Script muß ich mal schauen, so weit hab ich mich mit Linux noch nicht beschäftigt. Kennst Du evtl. nen Script, das dieses bewerkstelligt, oder Seiten, wo eine Beschreibung zu finden ist?

Greetings BlackBlade

Bunkerwolf
16.12.04, 10:09
ich hatte da etwas für ne Firma aufgebaut ... ich kann dir dazu näheres sagen mit einer Lösung die den Benutznamen von Windows am LDAP - Server auflöst und denen dann die E-mail mit PDF im Anhang aufsetzt ...

was brauchst du dazu ? Das Cups - backend oder ein script was diese Auflösung und das verschicken bewerkstelligt?

Bunkerwolf
16.12.04, 10:11
Schritt 1:
Inhalt von in folgende Datei schreiben: /usr/lib/cups/backend/pdffile

------------------------------------------------------------
# Dieses Skript muss ausführbar sein!!
#!/usr/bin/perl -w
#Perlskript zum Umwandeln von Postscript Dateien in PDF
#License: GPL
#
#Dieses Skript basiert auf dem Skript von Craig Ringer und Ryan Armanasco aus dem Jahre 2002
#
#Die Datei sollte nach /usr/lib/cups/backend/pdffile kopiert werden.
#ps2pdf uebernimmt anschliessend den Konvertierungsprozess.
#
#Damit Cups das Skript als Backend erkennt gibt das Skript
#in den ersten Zeilen einige Infos aus.
#
#Cups uebergibt folgende Argumente die als Variablen verarbeitet werden:
#123 | username | jobname | 1 | | /var/spool/cups/d00123-001
#
# $ARGV[0] - Print Job Nummer
# $ARGV[1] - Username
# $ARGV[2] - Print Job Name
# $ARGV[3] - Seitenzahl?
# $ARGV[4] - Zusatzinformationen, meistens leer
# $ARGV[5] - Name und Pfad der temporaeren Spooldatei
#
#
#
#use strict;
#use vars qw();

#Hier schreiben wir die Umgebungsvariablen in eine Datei um evtl. nach Fehlern suchen zu koennen
#system('env > /tmp/pdfenv');

# Damit CUPS die Datei als Backend erkennt gibt das Script diese Zeile aus wenn es aufgerufen wird
if ( scalar(@ARGV) == 0 ) {
print "network pdffile \"Unknown\" \"PDF-Writer\"\n";
exit 0;
}
undef $/;

#Wir oeffnen eine Datei /tmp/errlog in die Fehlerausgaben geschrieben werden
open(ERRLOG,'>/tmp/errlog') or die "Konnte errlog nicht oeffnen: $!\n";

#Schreiben des Usernames in eine Datei /tmp/pdf/job
open(NAME, '>/tmp/pdf/name') or die "Konnte Namen nicht schreiben";
print NAME "".$ARGV[1];
close NAME;

#Nachsehen ob das Spooldirectory existiert
if ( -d "/tmp/pdf") {

#Hier wird die Zieldatei im Ordner /tmp/pdf geoeffnet
open(PS2PDF,'|/usr/bin/ps2pdf - /tmp/pdf/"ausgabe.pdf"')
or print ERRLOG "Konnte Pipe zu ps2pdf nicht oeffnen: $!\n", exit;
}
open(CUPSSPOOL,$ARGV[5])
or print ERRLOG "Fehler beim Oeffnen: $ARGV[5]: $!\n", exit;

#ps2pdf uebernimmt die eigentliche Arbeit
print PS2PDF scalar(<CUPSSPOOL>);

#Schliessen der offenen Dateien
close(PS2PDF)
or print ERRLOG "Konnte Pipe zu ps2pdf nicht schliessen: $!\n", exit;
close(CUPSSPOOL)
or print ERRLOG "Fehler beim Schliessen $ARGV[5]: $!\n", exit;
(ERRLOG);

#Aufruf eines externen Skripts zur Weiterverarbeitung
system('/opt/pdfwriter/script/transport.sh');
# END

---------------------------------------------------------
Danach

lpadmin –p pdf_printer –v pdffile://unused –E –L server –i /usr/lib/cups/backend/pdffile
ausführen und dem CUPS bekannt geben.

In Samba verweisen, dass Cups die Drucker regeln soll

printing = CUPS
printcap name = CUPS
use client driver = yes
printer admin = // hier den Printeradmin eintragen
und eine Freigabe einrichten
security = server
password server = // Hier die IP - Adresse des PDCs eintragen ( kann auch w2k sein )
workgroup = // Hier den Domänen Namen einfügen
[PDF]
printable = yes
browseable = yes
comment = PDF - Drucker
printer name = cups_pdf_writer
printer driver = HP C LaserJet 4500-PS
read only = no
guest ok = yes

Bitte Groß und Kleinschreibung beachten!!!

----
natürlich muss das weitervearbeitungsskript transport.sh noch angelegt werden und bearbeitet werden. Standardmäßig wird in /tmp/pdf/ eine Datei name generiert die den Benutzernamen beinhaltet und eine ausgabe.pdf.
Das weiterverarbeitungsskript kann dazu genutzt werden um die Datei auf eine Ablagestruktur abzulegen oder per LDAP abfrage an einen EXchange weiter zu schicken ... falls fragen bestehen per E-mail oder ICQ - ....

BlackBlade
17.12.04, 11:19
Hallo Bunkerwolf,

besten Dank für die ausführliche Anleitung, ich werde mich am Wochenende mal damit näher beschäftigen unb bei Bedarf auf Dein Angebot zurückkommen und mich bei Dir melden.

Greetings BlackBlade