« Apache の Error?? | メイン | 東京タワー vs スカイツリー とポートタワー »

uuencode / uudecode は ...............

私はメンテナンスで uuencode / uudecode を多用します。

先日、保守で入ったサーバに uuencode / uudecode が入っていなかったので雑談をしながらお話をしたら、
セキュリティーホールになるから。。と言われた。。
確かに、不要なソフトをインストールしなくても良いけれど。。。。。ちょっと、やりすぎの様な気も。。確かに、その会社さんのサーバには全部 uuencode / uudecode が入っていませんでした。(涙)

なので perl で持ち歩きです。。
(なぜかperlとpython は入っているのさ。。)
##################
# uuencode ..
#!/usr/local/bin/perl
use strict;
use warnings;
for my $filename (@ARGV){
open my $rfh, '<', $filename or die "$filename : $!";
my $content = eval{ local $/; <$rfh> };
close $rfh;
my $perm = (stat($filename))[2] & 0777;
printf "begin %o $filename\n", $perm;
print pack("u", $_) while($_ = substr($content, 0, 45, ''));
print "`\nend\n";
}
__END__
#################################################

##################
#!/usr/local/bin/perl
# ...kind..uudecode....
use strict;
use warnings;
my ($begin, $perm, $filename, $wfh);
while(<>){
if (/^begin\s+([0-7][0-7][0-7])\s+(\S+)/o){
($begin, $perm, $filename) = (1, oct($1), $2);
open $wfh, '>', $filename or die "$filename : $!";
}elsif(/^end$/o){
$begin = 0;
close $wfh;
chmod $perm, $filename;
}
next unless $begin;
print $wfh unpack("u", $_);
}
__END__

###########################

トラックバック

このエントリーのトラックバックURL:
http://www.green.miki.hyogo.jp/~hiro/mt/mt-tb.cgi/142

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2010年03月20日 19:41に投稿されたエントリーのページです。

ひとつ前の投稿は「Apache の Error??」です。

次の投稿は「東京タワー vs スカイツリー とポートタワー」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。