總有一些人,明明網頁要給人家看,但是卻怕圖片被 COPY 走,這種心態真不知該怎麼說!!
在 html 的 ‹body› tag 中,加入三個東東,大致上就能使滑鼠的右鍵就能失效!
onDragStart="return false"
oncontextmenu="return false"
onSelectStart="return false"
這三個是什麼意義,請自個兒去查!
另外因為要大量改檔,底下的 awk 語法,可以瞬間改掉一個目錄下的所有 .htm!
awk 'BEGIN{LastFname="";} {sub( "‹ body","‹ body onDragStart=\"return false\" oncontextmenu=\"return false\" onSelectStart=\"return false\" ",$0); newfile=FILENAME".new"; print › newfile ;} FNR==1 {if (LastFname !=""){print "mv",LastFname".new",LastFname|"sh";} LastFname=FILENAME;} END {print "mv",newfile,FILENAME|"sh";}' *.htm
至於要底下目錄也要去找的話,可能得搭配其它的命令,如 find 等!請自行研究!
星期三, 十月 29, 2008
星期三, 十月 01, 2008
Procmail, Procmailrc 實現一個USER的 email 平均轉寄給三個 email
因工作上的需求,須要將一個user 的信件平均分給另外三個 email,在此利用 procmail 來做這個功能。
主機的上的 mail server 要啟動 procmail 的功能。
在該 user 的 home directory 下,新增一個 .procmailrc!檔案中放入下面幾行
SHELL=/bin/sh
LINEBUF=8192
VERBOSE=0
MAILTO=`/home/user/relay_mail`
:0
* >1
! $MAILTO
其中 relay_mail 是一個程式,它負責丟出一個 email 出來,也就是平均寄送三個 email 中的其中一個,是由它計算出來的!
在我的環境中,這樣子的運作時,會發生一個錯誤(需把 procmail log 打開,比較好抓錯誤),
Program mode requires special privileges, e.g., root or TrustedUser.
這個會寫在 procmail log 中,而這裡頭的 Program 實際上是指 sendmail!
為何是 sendmail 呢?
因為在 procmailrc 的設定檔中, ! $MAILTO 是把信件轉到 $MAILTO 這個信箱,而它完整的
轉換語法是這樣的(假設 $MAILTO=user@user.com):
/usr/sbin/sendmail -oi user@user.com
最後是用 sendmail 來進行寄送的動作。(我的 sendmail 版本是 8.13.1)
而 sendmail 的 mail queue 是在 /var/spool/clientmqueue,
這一個目錄的權限是 770, user:group 都是 smmsp,而現在是讓一個 user 來進行這一個動作,
所以會產生上面的錯誤!
還不知道怎麼把 該 user 加入 TrustedUser,只好先將該 user 的 group 改成 smmsp。
這樣就可以把信轉出去了!
附上 relay_mail 的程式,user perl 寫的!
其中還需要一個設定檔, relay_mail.data
這就是用來記錄要分給哪些人,還有分配的比例,長相如下:
user1@user.com#1#0
user2@user.com#1#0
user3@user.com#2#0
最後一個 0 是記錄分送的數字,每寄出一封信,數字會增加 1!
第二的欄位數子,是比例, user3 會分配到的數字會是其它兩人的兩倍。
#!/usr/bin/perl
my $debug=0;
my ($o_dir, $o_mail_data, @oh_mails, $oa_alldata, $o_data, @oa_data, $o_min_mails, $o_mails, $o_mailto);
$o_dir = '/home/sourcing';
$o_mail_data = "$o_dir/relay_mail.data";
$o_min_mails=99999999;
open MD,$o_mail_data;
while() {
chomp $_;
push @oa_alldata,$_;
next if ( $_ =~ /^#/ );
@oa_data = split('#',$_);
$o_mails = $oa_data[2]/$oa_data[1];
db($o_mails);
if ( $o_mails < $o_min_mails ) { $o_mailto = $oa_data[0]; $o_min_mails = $o_mails; } } close MD; open MD,">$o_mail_data";
foreach(@oa_alldata) {
$o_data = $_;
if ($o_data =~ /^$o_mailto/ ) {
@oa_data = split('#',$o_data);
$oa_data[2] +=1;
$o_data = join('#',@oa_data);
}
print MD $o_data."\n";
}
close MD;
print "$o_mailto\n";
sub db{
print "DEBUG:@_\n" if ( $debug);
}
主機的上的 mail server 要啟動 procmail 的功能。
在該 user 的 home directory 下,新增一個 .procmailrc!檔案中放入下面幾行
SHELL=/bin/sh
LINEBUF=8192
VERBOSE=0
MAILTO=`/home/user/relay_mail`
:0
* >1
! $MAILTO
其中 relay_mail 是一個程式,它負責丟出一個 email 出來,也就是平均寄送三個 email 中的其中一個,是由它計算出來的!
在我的環境中,這樣子的運作時,會發生一個錯誤(需把 procmail log 打開,比較好抓錯誤),
Program mode requires special privileges, e.g., root or TrustedUser.
這個會寫在 procmail log 中,而這裡頭的 Program 實際上是指 sendmail!
為何是 sendmail 呢?
因為在 procmailrc 的設定檔中, ! $MAILTO 是把信件轉到 $MAILTO 這個信箱,而它完整的
轉換語法是這樣的(假設 $MAILTO=user@user.com):
/usr/sbin/sendmail -oi user@user.com
最後是用 sendmail 來進行寄送的動作。(我的 sendmail 版本是 8.13.1)
而 sendmail 的 mail queue 是在 /var/spool/clientmqueue,
這一個目錄的權限是 770, user:group 都是 smmsp,而現在是讓一個 user 來進行這一個動作,
所以會產生上面的錯誤!
還不知道怎麼把 該 user 加入 TrustedUser,只好先將該 user 的 group 改成 smmsp。
這樣就可以把信轉出去了!
附上 relay_mail 的程式,user perl 寫的!
其中還需要一個設定檔, relay_mail.data
這就是用來記錄要分給哪些人,還有分配的比例,長相如下:
user1@user.com#1#0
user2@user.com#1#0
user3@user.com#2#0
最後一個 0 是記錄分送的數字,每寄出一封信,數字會增加 1!
第二的欄位數子,是比例, user3 會分配到的數字會是其它兩人的兩倍。
#!/usr/bin/perl
my $debug=0;
my ($o_dir, $o_mail_data, @oh_mails, $oa_alldata, $o_data, @oa_data, $o_min_mails, $o_mails, $o_mailto);
$o_dir = '/home/sourcing';
$o_mail_data = "$o_dir/relay_mail.data";
$o_min_mails=99999999;
open MD,$o_mail_data;
while(
chomp $_;
push @oa_alldata,$_;
next if ( $_ =~ /^#/ );
@oa_data = split('#',$_);
$o_mails = $oa_data[2]/$oa_data[1];
db($o_mails);
if ( $o_mails < $o_min_mails ) { $o_mailto = $oa_data[0]; $o_min_mails = $o_mails; } } close MD; open MD,">$o_mail_data";
foreach(@oa_alldata) {
$o_data = $_;
if ($o_data =~ /^$o_mailto/ ) {
@oa_data = split('#',$o_data);
$oa_data[2] +=1;
$o_data = join('#',@oa_data);
}
print MD $o_data."\n";
}
close MD;
print "$o_mailto\n";
sub db{
print "DEBUG:@_\n" if ( $debug);
}
訂閱:
文章 (Atom)
