終了コードを正しくキャプチャしてください。

終了コードを正しくキャプチャしてください。

プリンタにリモート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"印刷を再試行して2番目の印刷を許可するようにこのエラーを修正してください。

ベストアンサー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(あなたが言及したように)で、いくつかは次のとおりです。

など

デフォルトでこのエラーが発生する理由には、次の4つの回避策/原因があります。

  • Adobeのバージョン(印刷時に使用できるかPDFであるためプリンタで使用可能)にバグがあるか、何らかの理由で古すぎます。更新すると機能できますか?
  • あなたできるプリンタ/またはMacの設定を使用して「画像」として印刷します。これがうまくいっても、これが欲しいものかどうかはわかりません。
  • PDFを印刷するために、Adobe APIに依存したり依存しない可能性がある多数のオープンソース実装の1つである他のプログラムを使用して印刷できます。できる(Macがないので、Macで作業するのが最善だと思います)リンゴ中心南東)。
  • アップル側やプリンターブランド側の他のものかもしれません。バラよりこれ私が意味するものを説明するために例を投稿します。

おすすめ記事