0

ラズベリーパイで印刷サービスを作成しようとしています。アイデアは、PDF ファイルを送信して自宅で印刷できる印刷ジョブ用の pop3 アカウントを用意することです。そこで、fetchmail & rarr; を設定しました。procmail & rrr; uudeview でメールを収集し (ホワイトリストを使用)、ドキュメントを抽出して に保存します/home/pi/attachments/。この時点まで、すべてが機能しています。

ファイルを印刷するために、毎分cronjobを介して実行する予定のシェルスクリプトをセットアップしたかったのです。「許可が拒否されました」というメッセージが表示され、コマンドを手動で実行するときにスクリプトが機能している間は何も出力されないため、ここで行き詰まっています。

これは私のスクリプトがどのように見えるかです:

#!/bin/bash
fetchmail                 # gets the emails, extracts the PDFs to ~/attachments
wait $!                   # takes some time so I have to wait for it to finish
FILES=/home/pi/attachments/*
for f in $FILES; do       # go through all files in the directory
   if  $f == "*.pdf"      # print them if they're PDFs
   then
      lpr -P ColorLaserJet1525 $f
   fi
   sudo rm $f             # delete the files
done;
sudo rm /var/mail/pi      # delete emails

スクリプトが実行された後、次のフィードバックを受け取ります。

1 message for print@MYDOMAIN.TLD at pop3.MYDOMAIN.TLD (32139 octets).
Loaded from /tmp/uudk7XsG: 'Test 2' (Test): Stage2.pdf part 1   Base64
Opened file /tmp/uudk7XsG
procmail: Lock failure on "/var/mail/pi.lock"
reading message print@MYDOMAIN.TLD@SERVER.HOSTER.TLD:1 of 1 (32139 octets) flushed
mail2print.sh: 6: mail2print.sh: /home/pi/attachments/Stage2.pdf: Permission denied

電子メールは pop3 アカウントから取得され、添付ファイルが抽出され、短時間表示されて~/attachements/から削除されます。しかし、プリントアウトはありません。

私が間違っていることはありますか?

4

2 に答える 2

2
if  $f == "*.pdf"

する必要があります

if  [[ $f == *.pdf ]]

また、私は思う

FILES=/home/pi/attachments/*

引用する必要があります:

FILES='/home/pi/attachments/*'

提案:

#!/bin/bash
fetchmail                      # gets the emails, extracts the PDFs to ~/attachments
wait "$!"                      # takes some time so I have to wait for it to finish
shopt -s nullglob              # don't present pattern if no files are matched
FILES=(/home/pi/attachments/*)
for f in "${FILES[@]}"; do                              # go through all files in the directory
    [[ $f == *.pdf ]] && lpr -P ColorLaserJet1525 "$f"  # print them if they're PDFs
done
sudo rm -- "${FILES[@]}" /var/mail/pi         # delete files and emails at once
于 2014-07-09T20:58:52.597 に答える
-1

以下を使用して、最初に pdf ファイルをフィルタリングし、次に for ループ内の if ステートメントを削除できます。

FILES="ls /home/pi/attachments/*.pdf" 
于 2014-07-09T21:21:04.037 に答える