종료 코드를 올바르게 캡처하십시오.

종료 코드를 올바르게 캡처하십시오.

프린터에 원격 Mac이 연결되어 있습니다.

로컬 시스템에서 SSH를 사용하여 Mac에서 인쇄를 원격으로 실행하기 위해 논의된 "ssh 포트 전달/터널링"을 사용했습니다.여기.

lp다음은 원격 서버에서 프린터 명령을 실행하고 성공적으로 인쇄되었는지 확인하는 로컬 시스템에 있는 코드입니다 .

until ssh -p 3334 remuser@localhost "lp -d Brother_HL_L2350DW_series $HOMEDIR/Printed/$NEWFILE" >/home/system/send4print/printererror.log 2>&1

do

echo "Exit Code of the command was: $?"
echo "Send email that there is an issue printing invoice for the below file. Issue is: `cat /home/system/send4print/printererror.log`"
ls -ltr $FILE >>/home/system/send4print/printererror.log

mail -s "PRINTER SERVICE FAIL ALERT. PLEASE CHECK YOUR PRINTER!!" [email protected] < /home/system/send4print/mailbody.txt

sleep 20

done

echo "Print successful. Deleting $FILE"

인쇄가 성공했음을 나타내는 다음 메시지가 로그에 인쇄되었습니다.

nohup.out:Print successful. Deleting /home/system/send4print/online_delivery_10000656.pdf

그런데 원격 Mac OS 시스템을 확인하던 중 다음 오류로 인해 인쇄에 실패했습니다.

online_delivery_10000656.pdf
Stopped - Can't open "/private/var/spool/cups/d12637-001"

해당 스냅샷의 스냅샷을 첨부합니다.

여기에 도움이 필요합니다.

  1. 원격 호스트에서 이러한 오류가 발생 하면 Can't open "/private/var/spool/cups/d12637-001"로컬 스크립트의 반환 코드가 실패하기를 원하며 현재는 다음과 같은 결과를 얻습니다.0

  2. Can't open "/private/var/spool/cups/d12637-001"인쇄를 다시 시도하고 두 번째 인쇄할 수 있도록 이 오류를 수정하세요 .

답변1

종료 코드를 올바르게 캡처하십시오.

먼저 종료 코드를 처리하는 것과 같은 방식으로 문제를 해결해 보겠습니다.

ssh -p 3334 remuser@localhost "lp -d Brother_HL_L2350DW_series $HOMEDIR/Printed/$NEWFILE" >/home/system/send4print/printererror.log

SERVICE_EXIT_STATUS=$? # store the exit code

# mail if failed
if [ $SERVICE_EXIT_STATUS -ne 0 ];then
    mail -s "PRINTER SERVICE FAIL ALERT. PLEASE CHECK YOUR PRINTER!!" [email protected] << /home/system/send4print/mailbody.txt # email when there is an error...
    echo "$FILE is the culprit" >>/home/system/send4print/printererror.log # adding at end of file like in your original script the filename of the "culprit"
    echo "Send email that there is an issue printing invoice for the below file. Issue is: `cat /home/system/send4print/printererror.log`" # printing like your original script the log
else
    echo "Print successful. Deleting $FILE"
    #this is where you may delete the file i guess?
fi;

until필요에 따라 사용:

until ssh -p 3334 remuser@localhost "lp -d Brother_HL_L2350DW_series $HOMEDIR/Printed/$NEWFILE" >/home/system/send4print/printererror.log &> /dev/null

SERVICE_EXIT_STATUS=$? # store the exit code

do
# mail if failed
if [ $SERVICE_EXIT_STATUS -ne 0 ];then
    mail -s "PRINTER SERVICE FAIL ALERT. PLEASE CHECK YOUR PRINTER!!" [email protected] << /home/system/send4print/mailbody.txt # email when there is an error...
    echo "$FILE is the culprit" >>/home/system/send4print/printererror.log # adding at end of file like in your original script the filename of the "culprit"
    echo "Send email that there is an issue printing invoice for the below file. Issue is: `cat /home/system/send4print/printererror.log`" # printing like your original script the log
else
    echo "Print successful. Deleting $FILE"
    #this is where you may delete the file i guess?
fi;

done

이것은 작동합니다. 프린터는 없지만 (내가 아는 한) 논리가 작동하는지 테스트했습니다.

프린터 관련 오류

저는 프린터도 없고 귀하의 프린터 브랜드도 없지만 검색을 해보니 귀하와 유사한 오류가 있는 여러 게시물을 발견했습니다. 일부는 Mac(귀하가 언급한 것처럼)에서, 일부는 다음과 같습니다.

기본적으로 이 오류가 발생하는 이유는 다음과 같은 네 가지 해결 방법/원인이 있습니다.

  • Adobe 버전(인쇄할 때 사용할 수 있거나 PDF이기 때문에 프린터에서 사용할 수 있음)에 버그가 있거나 어떤 이유로 너무 오래되었습니다. 업데이트하면 작동할 수 있습니까?
  • 할 수 있다프린터/또는 Mac의 설정을 사용하여 "이미지"로 인쇄합니다. 이것이 작동하더라도 이것이 원하는 것인지 확실하지 않습니다.
  • PDF를 인쇄하기 위해 Adobe API에 의존하거나 의존하지 않을 수 있는 수많은 오픈 소스 구현 중 하나인 다른 프로그램을 사용하여 인쇄할 수 있습니다.할 수 있다(Mac이 없으므로 Mac에서 작업하는 것이 가장 좋다고 생각합니다)사과 중심남동).
  • Apple 측이나 프린터 브랜드 측의 다른 것일 수도 있습니다. 바라보다이것내가 의미하는 바를 설명하기 위해 예제를 게시합니다.

관련 정보