电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

使用efax接收传真


发布日期:2023/12/22
 

作者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 ::

上一篇:甲骨文2014第一财季集成系统增长60%

下一篇:如何在squid中通过URL进行访问控制