ini anehnya ya kalo saya jalankan perlscript spuseradd.pl ini make
wrapper.c yang dibawahnya baik user root maupun user biasa sukses
jalanin
spawn useradd ini make expect , tapi kalo jalanin script spuseradd.pl
ini aja (tanpa make wrapper.c) make root sukses, tapi kalo make user
biasa script ini tidak berhasil
(tidak berhasilnya disini bukan spawn `useradd ` tapi gagal di expect
gitu
mis:(lihat bawah) $eksis=$t->expect(30,'-re',".*exists.*") || die
"timeout";
pasti "timeout" )
kenapa ya ?



drwxr-xr-x   2 root     root         4096 Jul 21 01:53 /usr/sbin
-rwxr-xr-x   1 root     root        47592 Apr 16 07:03
/usr/sbin/useradd
-rwxr-xr-x   1 root     root        31700 Apr 16 07:03
/usr/sbin/userdel
-rwsr-xr-x   1 root     root        10708 Apr 12 22:29
/usr/sbin/userhelper
-rwxr-xr-x   1 root     root        47800 Apr 16 07:03
/usr/sbin/usermod
-rwsr-xr-x   1 root     root         5736 Apr 20 02:39
/usr/sbin/usernetctl
-rwsr-sr-x   1 root     root        12067 Aug 25 15:41
/tmp/root/wrapper
-rwsr-sr-x   1 root     root         1456 Aug 25 16:09
/tmp/root/sptelnet.pl

#!/usr/bin/perl
#spuseradd.pl
use Expect;
$user=$ARGV[0];
$password=$ARGV[1];
$<=$>;
$(=$);

# ada yang tau nggak cara men"die" spawn bila gagal spawn ? soalnya
script #dibawah ini bila diganti dengan command yang kagak ada
disistem kan harusnya #jalanin die "gagal tambah" kan ? tapi kok
jadinya si program "diem" terus nih ?
#tapi ini nggak begitu penting sih
($t=Expect->spawn("/usr/sbin/useradd $user")) || die "gagal tambah
user\n";
#$t->log_stdout(0);
print "uid:$<\neuid:$>\n";
print "gid:$(\negid:$)\n";
#kondisi bila user $user udah ada
#jika $eksis udah ada $kondisi=1
#jika $eksis belon ada $kondisi=undef or 0
$eksis=$t->expect(30,'-re',".*exists.*")
if ($eksis) {
    print "udah ada";
    die "\n";
}
$unable=$t->expect(30,'-re',".*unable.*");
if ($unable) {
    print "unable";
    die "\n";
}
#udah sejauh ini berarti sukses `useradd` nya
print ("sukses add");
$t->soft_close;

/*wrapper*/
#include <unistd.h>
main(argc,argv,y)
int argc;
char *argv[];
char y;
{
  setuid(0);
  setgid(0);
  printf(argv[1],argv[2]);
  y = *argv[1];
  execlp("/tmp/root/spuseradd.pl","\0",argv[1],"\0",argv[2],"\0");
}




--------------------------------------------------------------------------------
Utk berhenti langganan, kirim email ke [EMAIL PROTECTED]
Informasi arsip di http://www.linux.or.id/milis.php3
Pengelola dapat dihubungi lewat [EMAIL PROTECTED]
Hosted by http://www.Indoglobal.com

Kirim email ke