Frage

Frage

Ich habe einen Samba-Dienst auf meinem raspberry pi 3Linux installiert: Jessie (Debian 8).

smb.conf

[global]
  netbios name = medicalexporter
  workgroup = WORKGROUP

  public = yes

  # Run a WINS server
  wins support = yes

  local master = yes
  preferred master = yes
  os level = 65

  log level = 10
  log file = /home/pi/logs/samba.log.%m

[SambaTest]
  comment = Samba-Test-Freigabe
  path = /home/pi/shares/test
  read only = no

[pdfCreatorLinux]
  path = /tmp
  printable = yes
  guest ok = yes
  print command = /usr/bin/printpdf %s
  lpq command =
  lprm command =

/usr/bin/printpdf

#!/bin/sh
LOG_FILE=/home/pi/logs/pdf.log
exec 3>&1 1>>${LOG_FILE} 2>&1
DATE="date +%b%d-%H%M%S"
OUTDIR=/home/pi/shr/pdfdropbox

"hello" >> /home/pi/logs/2.log
ps2pdf $1 \$OUTDIR/\$DATE.temp
mv \$OUTDIR/\$DATE.temp \$OUTDIR/\$DATE.pdf
rm \$1

Zu Testzwecken habe ich diesem Skript die Berechtigung gegeben 777mitsudo chmod 777 /usr/bin/printpdf

Samba-Ordner

mkdir -p ~/shr/pdfdropbox
chown root:root ~/shr/pdfdropbox
chmod u+rwx ~/shr/pdfdropbox

Der Samba-Dienst hat einen Benutzer und smbd& nmbdläuft. Ich kann den Samba-Dienst auf meinem Mac unter sehen sharingund auf den Freigabeordner zugreifen. Ich sehe den Drucker unter meinen Netzwerkdruckern. Wenn ich ein Dokument über den Samba-Drucker drucke, zeigt er mir an, dass er eine Verbindung herstellt, die Daten sendet und dass die Daten ohne Fehler empfangen werden.

Aber es scheint nicht ausgeführt zu werden. Außer den Protokollen von Samba selbst (zwei Protokolle, eines mit dem Namen meines Computers und eines mit einer IP) /usr/bin/printpdfist nichts darin ./home/pi/logs

Wenn ich das PDF-Skript manuell starte, werden die Protokolle erstellt.

PS: Ich habe mich größtenteils an dieses Tutorial gehalten: http://www.tldp.org/LDP/LG/issue72/bright.html

Frage

Warum wird das Skript nicht ausgeführt?

Antwort1

Ich glaube, diese Zeile enthält einen Fehler:

"hello" >> /home/pi/logs/2.log

Vielleicht möchten Sie versuchen

echo "hello" >> /home/pi/logs/2.log

Und Sie setzen das $s im Rest des Skripts in Anführungszeichen. Ich würde versuchen, das \s zu entfernen. Und die vollständigen Dateinamen in Anführungszeichen setzen.

Abschließend:

echo "hello" >> /home/pi/logs/2.log
ps2pdf "$1" "$OUTDIR/$DATE.temp"
mv "$OUTDIR/$DATE.temp" "$OUTDIR/$DATE.pdf"
rm "$1"

in der zweiten Hälfte Ihres Skripts

Antwort2

Ich habe also mehrere Dinge gefunden. Zuerst musste ich hinzufügen, printing = BSDdass sonst vielleicht CUPS verwendet wird, wasüberschreibtEinstellungen. Dann musste ich festlegen, printcap name = /dev/nullsonst verschwanden die Ghostscript-Dateien, bevor ich darauf zugreifen konnte. Die Befehle lpqund lprwaren nicht erforderlich.

[pdfCreatorLinux2]
#  load printers = no
  printcap name = /dev/null
  path = /tmp/
  printable = yes
  printing = BSD
  print command = /usr/bin/printpdf %s
#  lpq command =
#  lprm command =

Zweitens müssen alle Skripte und Ordner für den Benutzer des Samba-Dienstes zugänglich sein.

PS: Das PDF-Skript habe ich ebenfalls angepasst, dies war jedoch nicht der Grund, warum es nicht ausgeführt wurde.

#!/bin/sh
LOG_FILE=/home/pi/logs/pdf.log
exec 3>&1 1>${LOG_FILE} 2>>&1
DATE=$(date +"%m_%d_%Y")
OUTDIR="/home/pi/shr/pdfdropbox"

ps2pdf $1 "$OUTDIR/$DATE.temp"
mv $OUTDIR/$DATE.temp $OUTDIR/$DATE.pdf
rm $1

verwandte Informationen