熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

使用efax接收傳真

2013-11-13 15:28:49  來源: Oracle 

  作者Mark Nielsen 翻譯chiesa
  
  目的
  我打算建一個fax服務器我想過使用HylaFax但是我的RedHat系統已經有了 mgetty安裝HylaFax rpm的時候會發生沖突好像如果我能正確使用mgetty的話我還 可以通過mgetty做登錄(譯注也許指撥號)進行voice和fax操作現在 我想的是通過RedHat 的默認安裝而不需要任何附加軟件就可以接收傳真
  
  Efax和fax其實是一回事fax是一個調用efax的腳本
  
  文件配置
  有兩個文件你需要配置/usr/bin/fax和/etc/inittab
  復制/usr/bin/fax到/usr/bin/fax_custom然後我修改了以下幾行
  
  FAXDIR=/var/spool/fax/incoming
  NAME= Computer Fax Server
  FROM=+
  ANSFNAME=fax_%Y%m%d_%H%M%S
  
  在/etc/inittab中 我的修改如下:
  
  
  S::respawn:/bin/sh /usr/bin/fax_custom answer
  
  Efax和fax 單個接收
  如果你知道有人要給你發傳真你可以單個的接收它執行一下命令
  efax d /dev/ttyS l c r reply
  
  或者
  fax answer
  
  
  如果你不想fax掛在後台等待下個傳真連接那麼就不要進行我在文件配置 一節提到的對/etc/inittab的修改
  
  Efax 和 fax 通過inittab多重接收
  如果你象我在文件配置一節說的那樣修改/etc/inittab那麼只要重啟機器你 的modem就會自動接收fax並將內容輸出到/var/spool/fax/incoming目錄
  如果你執行下面的命令
  
  ps auxw | grep efax
  
  
  你會看到efax在後台運行象這樣
  root ? S< 21:47 0:00 /usr/bin/efax -v -v chewmainrxtf -d/dev/modem -iZ -i&FE&D2S7=120 -i&
  非常好的是,如果你殺死進程1689,它會自動在後台再次運行,我相信,會 重新讀取/usr/bin/fax_custom文件。tw.wInGwIt.com於是,如果你對這個文件進行了修改的話, 只要 在你為了測試配置試圖發送傳真之前殺死efax進程就可以了。
  
  收到傳真以後怎麼辦?
  運行一個cron的任務(job),用來將/var/spool/fax/incoming裡的文件分類,為每組 傳真創建一個lock文件,然後或者將它們轉換成pdf格式以便網上浏覽,或者直接將它們 打印出來。
  如果你想把傳真打印出來,操作如下:
  
  efix -ops fax_20020606_014847.001 | lpr
  
  建議你打印文件後將它保存在一個備份的目錄裡。
  
  發送傳真
  安裝打印服務比我原先想的要麻煩。首先,按照幫助說的做(有一點變動):
  ln /usr/bin/fax /usr/bin/faxlpr
  
  在 /etc/printcap.local 文件中,
   fax:lp=/dev/null:sd=/var/spool/fax:if=/usr/bin/faxlpr_perl:
  
   mkdir /var/spool/lpd/fax
   touch /var/spool/lpd/fax/lock
  
  /etc/rc.d/init.d/lpd restart
  
  我還做了些變動:
  
  在 /usr/bin/faxlpr中, 我修改
  l=`$FAX send "$num" fax$$`
  為
  
  `gs -q -sDEVICE=tiffg3 -dNOPAUSE -sOutputFile=fax_out fax$$
   還修改了以下三行:
   num=` echo "$cfile" | sed -e /^[^J]/d -e s/..//`
   host=`echo "$cfile" | sed -e /^[^H]/d -e s/..//`
   user=`echo "$cfile" | sed -e /^[^P]/d -e s/..//`
  
   我保存了如下的一個/usr/bin/faxlpr_perl腳本,並chmod
   755 /usr/bin/faxlpr_perl:
  
  #!/usr/bin/perl
  
  my $String = "";
  foreach my $Arg (@ARGV)
   {
   if ($Arg =~ /-j/)
   {
   my $Copy = $Arg;
   $Copy =~ s/-j//;
   open(FILE,">lock); print FILE hfA$Copy; close FILE;
   }
   }
  my $Command = /usr/bin/faxlpr;
  system ($Command @ARGV);
  print ;
  
  
   我很討厭這一步但是我不得不chmod /dev/ttyS以便
   控制打印工作的lpr用戶可以使用modem
  
  那個perl腳本使faxlpr可以找到進程號修改fax命令為efax也是 必要的因為它試圖創建lock文件而我並不想這樣
  
  我相信我的發送傳真的方法會破壞lock文件這樣如果你在接受傳真的時候發送傳真 可能會導致錯誤
  
  經過這些痛苦之後你的打印程序還需要可以指定J選項能夠象這樣 使用lpr P fax J fileps 否則就打印到文件然後 用行命令將文件打印出來
  
  你也可以只使用efax命令發送傳真而不必通過打印服務不過你得在發送之前 使用 gs將傳真轉換一下格式這也是很痛苦的事情
  
  結論
  如果有機會的話我會嘗試我是否可以
  使用samba和mgetty發送傳真我會在inittab中用mgetty代替/usr/bin/fax_custom 這樣我就可以方便的接收和發送傳真使用efax接收和手動發送傳真都還可以不過要通過打印服務 發送的話就很痛苦了
  我還想看看是否可以使用mgetty做語音和登錄(login sessions)方面的事情而不僅僅是傳真
  Efax是我在解決mgetty的問題(我試過但是失敗)之前的一個臨時方法我不用hylafax的 唯一原因是安裝它的rpm包時和mgetty沖突然後我對mgetty發生興趣接著轉向efax我正在 嘗試將來使用mgetty因為我還想使用同一個modem做語音和登錄方面的事情好像可以做到這些 不過好像有些modem不能正確的檢測faxvoicelogin我真的不情願用efax和打印服務發送傳真
  
  參考
  The Easy Fax Server!
  A Linux Fax Server for a Windows Network
  Linux Fax for Dummies
  Hylafax
  Article Version : Date Last Changed Thu Jun ::
  

From:http://tw.wingwit.com/Article/program/Oracle/201311/16781.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.