Arsip ‘Script’ Tag

Mengambil TEXT dalam XML WordPress dg PHP

Semalam ada request (kaya di radio saja), untuk mengambil data TEXT dari XML hasil export blog WordPress-nya. Hm, langsung buka-buka manual PHP, ketemu XML Parser.

http://localhost/doc/php-doc/html/book.xml.html

Dari sana ketemu contoh program, langsung copy-paste, sunting-2, simpan… dan jalankan!

Hanya tag2 berikut yg saya ambil:
TITLE = judul posting
PUBDATE =  tanggal publikasi
CONTENT:ENCODED = isi posting
WP:COMMENT_AUTHOR = komentator
WP:COMMENT_AUTHOR_EMAIL = email komentator
WP:COMMENT_DATE = tanggal komentar
WP:COMMENT_CONTENT = komen
tar

Untuk menjalankan:
$ php xml2txt.php > hasil.txt

Berkas XML (wordpress.2009-06-25.xml) dan xml2txt.php harus berada dlm direktori kerja.

Baca selebihnya »

Jagasama is hosted at GoogleCode

My friend, fatyu, currently stay in West Java asked me last afternoon about my program, jagasama. The program was hosted at sihab.com and the site was down :( So, for continuity development I decide to host it at googlecode. Why googlecode not the other? Well, it is just like why I choose my green shirt today :D

JagaSama

JagaSama
Menjaga isi direktori rumah tetap sama saat login atau startup sistem

Oleh: eshabe <eshabe[at]gmail.com>
Lisensi: GPL v2
Versi terakhir: 0.1d3 (developmet) – 16 Maret 2009
Traget OS: GNU/Linux
Dibangun dlm OS: Ubuntu Linux 7.10
Ujicoba OS: Ubuntu Linux 7.10

* Latar Belakang
Bagi para penyedia komputer berbagi (shared computer), spt. warnet, hal yg paling ditakutkan adalah:
1. Instalasi program tidak legal (baik isi ataupun cara)
2. Penyebaran virus
3. Pengubahan seting komputer

Permasalahan nomor 1 bisa diminimalkan dg. hanya menyediakan user “biasa” (bukan administrator) hingga pengguna dibatasi kemampuannya untuk menambah (atau mengurangi program). Nomor 2 bisa diminimalkan dg. menggunakan OS Linux dan nomor 3 bisa diminimalkan dg. program semisal DeepFreez

Namun, penyelesaian nomor 3 bila menggunakan OS Linux masih mengalami keterbatasan program (kawan saya pemilik warnet mengatakan belum ada). Karena alasan itulah maka JagaSama dibuat.

* Instalasi
Silahkan baca berkas INSTALL
Baca selebihnya »

DEB Banyak Yg Rusak?

Menjengkelkan sekali! Setelah diperiksa dg md5sum, ternyata banyak berkas deb yg rusak (md5sum FAILED). Jika hanya satu-dua berkas hal ini tidak masalah namun jika belasan?

Di tulisan sebelumnya, hasil pemeriksaan saya simpan di /tmp/cekmd5sum.txt, maka untuk mendapatkan daftar berkas yg rusak dpt dg cara:

grep FAILED /tmp/cekmd5sum.txt | sort -k2 > /tmp/chkfailed.txt

Selanjutnya, adalah menggandakan ulang berkas-2 yg ada di /tmp/chkfailed.txt. Untuk membantu pekerjaan yg menjemukan ini, kamu bisa menggunkan skrip kesayanganmu.

Saya tulis skrip berikut:


#!/usr/bin/perl

my $badfile = $ARGV[0];
my $md5sum = $ARGV[1];

if (! -r $badfile or ! -r $md5sum)
{
print “Usage: mymd5.pl badfilelist md5sumfile\n”;
exit;
}

my @bads;
my @md5;

die “Can not open $badfile” if (!open(BADF,”<$badfile”));
while (my $l=)
{
chomp($l);
my @f = split /: /,$l;
$bads[$#bads+1] = $f[0];
}
close BADF;

die “Can not open $md5sum” if (!open(MD5,”<$md5sum”));
while (my $l=)
{
chomp($l);

foreach my $i (@bads)
{ $md5[$#md5+1] = $l if (index($l,” $i”)>=0); }
}
close MD5;

print join (“\n”,@md5);

Simpan dg nama mymd5.pl (atau nama lain, sesukamu). Skrip ini berfungsi untuk mendapatkan daftar md5sum dari berkas-2 yg rusak (FAILED). Cara memakainya adalah:

mymd5.pl /tmp/chkfailed.txt /home/sihab/ubuntu/MD5SUMS > /tmp/badmd5.txt

Lanjut….

#!/usr/bin/perl

my $md5sum = $ARGV[0];
my $src=”/media/cdrom”;

die “Can not open \”$md5sum\”" if (!open(MD5,”<$md5sum”));
while (my $l=)
{
chomp($l);
my @f = split ‘ ‘,$l;
print “* “.$f[1].”\n”;
my $m = readpipe (‘md5sum ‘.$f[1]);
chomp ($m);
if ($m ne $l)
{
print “-exp: $l\n-act: $m\n”;
if (-r “$src/”.$f[1])
{
my $cmd = “cp $src/”.$f[1].” “.$f[1];
system ($cmd);
print ” copy\n”;
my $m = readpipe (‘md5sum ‘.$f[1]);
chomp ($m);
if ($m ne $l) { print “ERROR: checksum is different after copy!\n”; }
}
else
{ print ” * Pls use another source!\n”; }
}
else { print ” ok\n”; }
}
close MD5;

Simpan dg nama copyifbad.pl. Masukkan DVD Repo, lalu jalankan:

copyifbad.pl /tmp/badmd5.txt

Bila muncul : * Pls use another source! maka DVD harus diganti dg yg lain.

* N.B. : Jgn lupa untuk mengubah hak akses ke excutable tiap-2 skrip.

Powered by ScribeFire.

Membuat Berkas MD5SUMS Repo Lokal

Menyambung tulisan sebelumnya , untuk memastikan bahwa berkas-2 yg digandakan ke HD tidak ada kerusakan atau sama dg yg di DVD adalah dg memeriksa checksum tiap-2 berkas.

Ada beberapa cara untuk mendapatkan daftar checksum. Yg pertama adalah menggabungkan berkas-2 MD5SUMS tiap-2 DVD.

1. Masukkan DVD 1
2. Di Terminal, masuk ke direktori repo
cd /home/sihab/ubuntu

3. Gandakan berkas MD5SUMS
cp /media/cdrom/MD5SUMS .

4. Masukkan DVD 2
5. Tambahkan berkas di DVD ke HD
cat /media/cdrom/MD5SUMS >> MD5SUMS

6. Lakukan hal yg sama untuk DVD 3,4,5

Namun Anda harus melakukan proses pembersihan karena MD5SUMS di DVD berisi juga checksum berkas-2 Packages*.

Cara lainnya adalah mengambil checksum yg tertera di berkas-2 Packages di tiap-2 komponen. Cara ini agak rumit, namun saya tulis di sini karena akan saya gunakan untuk keperluan lain.

Salin skrip Perl berikut:

#!/usr/bin/perl

my $VERSION = ‘1.0-20071220′;
my $DISTRO = ‘gutsy’;

my $main_Path = ‘/home/sihab/ubuntu’;
my @packfiles = (
“$main_Path/dists/$DISTRO/main/binary-i386/Packages”,
“$main_Path/dists/$DISTRO/multiverse/binary-i386/Packages”,
“$main_Path/dists/$DISTRO/restricted/binary-i386/Packages”,
“$main_Path/dists/$DISTRO/universe/binary-i386/Packages” );

my %packlist;

sub doReadPackages
{
my $packf = $_[0];
return if (!open (PACKF, “<$packf”));
while (my $l=)
{
my @f = split /: /,$l;
if ( $f[0] eq ‘Package’)
{
chomp ($f[1]);
$packlist{$f[1]} = $l;

READDESC: while ($l=)
{
last READDESC if ( $l eq “\n”);
$packlist{$f[1]} .= $l;
}
}
}
close PACKF;
}

sub getfield #(f,packagestr)
{
my $f = $_[0];
my $packagestr = $_[1];
my @l = split /\n/,$packagestr;
my $desc;
foreach my $i (@l)
{
my @x = split /: /,$i;
if ($f eq ‘Description’)
{
if ($x[0] eq $f)
{ $desc = $x[1]; }
elsif ($i =~ /^ /)
{ $desc .= “\n”.$i; }
elsif ($desc)
{ return $desc; }
}
elsif ($f eq $x[0])
{
return $x[1];
}
}
return $desc;
}

sub createMD5SUMFile
{
my @l;
foreach my $i (keys(%packlist))
{
my $md = getfield (‘MD5sum’, $packlist{$i});
my $fn = getfield (‘Filename’, $packlist{$i});
$l[$#l+1] = “$md $fn”;
}
return if (!open(MD5,”>MD5SUMS”));
print MD5 join “\n”,@l;
close MD5;
}

sub doCreateDistroMD5DUM
{
foreach my $i (@packfiles) { doReadPackages ($i); }
createMD5SUMFile;
exit;
}

doCreateDistroMD5DUM;

Lalu simpan. Jgn lupa merubah akses ke executable. Jalankan di lokasi repo.

Periksa checksum dg:
md5sum -c MD5SUMS | tee /tmp/cekmd5sum.txt

Untuk mencari berkas yg bermasalah gunakan grep:
grep FAILED /tmp/cekmd5sum.txt

Powered by ScribeFire.

Halaman Berikutnya »