#!/bin/bash #Created By Henry Saptono #Jun 2007, Jakarta #Name of Application : HAFANA PDC Admin Tool #License: Bebas dan Gratis # script ini memerlukan program zenity, expect dan setpassword.sh # Parameter USERSMB & USERSMBPASS ini mendefinisikan # Nama user samba yang akan digunakan untuk # mengakses databse user informastion # Nama user samba yg digunakan tidak harus user root (administrator) # Untuk itu Anda buat user tersebut seperti contoh berikut: # useradd hana # smbpasswd -a hana # USERSMB="hana" USERSMBPASS="hana" MYCOMPANY="PT HAFANA" if [ ! -x /usr/bin/zenity ]; then echo "zenity program not installed, please install" exit 1; fi if [ ! -x /usr/bin/expect ]; then echo "expect program not installed, please install" exit 1; fi if [ ! -x /usr/sbin/setpassword.sh ]; then echo "/usr/sbin/setpassword.sh scripts not found" echo "Please check permission of /usr/sbin/setpassword.sh" echo "Or you can download from http://overflow.web.id/skrip/setpassword.sh.txt" exit 1; fi if [ $USER != "root" ]; then zenity --error --title "Eksekusi gagal" --text "Gagal: Aplikasi ini hanya dijalankan oleh user root !" exit 1; fi zenity --question --title "NCI PDC admin tool" --text "Apakah Anda yakin akan menjalankan aplikasi ini" if [ $? -ne 0 ] then zenity --info --title "Eksekusi Batal" --text "Aplikasi batal dieksekusi" exit 1 fi while [ 1 ]; do ans=$(zenity --list --height=350 --width=400 --title "Adminstration tool - PDC server $MYCOMPANY" --text "Pilih menu operasi yang Anda inginkan ? cancel utk keluar" --radiolist --column "view" --column "Nama operasi" TRUE "Lihat daftar user" FALSE "Lihat daftar group" FALSE "Buat User" FALSE "Buat Group" FALSE "Masukkan user ke group" FALSE "Hapus user dari group" FALSE "Hapus User" FALSE "Hapus Group"); case "$ans" in "Lihat daftar user") LUSERS="" Y=0; for x in `net rpc user -U $USERSMB%$USERSMBPASS | sort`; do LUSER="$x " LUSERS="$LUSERS $LUSER" Y=$[Y+1] done dus=$(zenity --list --height=470 --width=400 --title "$Y Daftar user - PDC server $MYCOMPANY" --text "daftar user" --column "Nama user" $LUSERS); ;; "Lihat daftar group") LGROUPS="" Y=0; for x in `net rpc group -U $USERSMB%$USERSMBPASS | sort`; do LGROUP="FALSE $x " LGROUPS="$LGROUPS $LGROUP" Y=$[Y+1] done groupselect=$(zenity --list --height=470 --width=400 --radiolist --title "$Y Daftar GROUP - PDC server $MYCOMPANY" --text "daftar group" --column "Lihat member" --column "Nama Group" $LGROUPS); if [ -n $groupselect ]; then users="" for x in `getent group $groupselect | cut -f4 -d: | sed -e "s/\,/\\n/g"` do users="$users $x " done dus=$(zenity --list --height=470 --width=400 --title "Daftar anggota group $groupselect" --text "daftar anggota group $groupselect" --column "Nama user" $users); fi ans="" ;; "Buat User") username=$(zenity --entry --title "username entry" --text "Login/Username (tidak boleh dng tanda spasi, @ , - , \ , / , !)") if [ -z "$username" ]; then zenity --error --text "Login/Username kosong !" ans="" else password=$(zenity --entry --title "password entry" --hide-text --text "Password (minimal 8 karakter) !") passl=`echo $password|wc -c` if [ $passl -lt 8 ]; then zenity --error --text "Password nya kependekan !" else useradd -m $username && /usr/sbin/setpassword.sh $username $password echo "useradd -m $username && /usr/sbin/setpassword.sh $username $password" if [ $? -eq 0 ]; then zenity --info --text "Buat user $username berhasil" else zenity --error --text "Buat User gagal Bang (mungkin coba lagi) !" fi fi ans="" fi ;; "Buat Group") groupname=$(zenity --entry --title "groupname entry" --text "Nama Group (tidak boleh dng tanda spasi, @ , - , \ , / , ! , - kalau ada akan dihapus)") grpname=`echo "$groupname" | sed -e "s/[@ \ \! \\ \/]//g"` if [ -z "$grpname" ]; then zenity --error --text "groupname kosong !" ans="" else groupadd $grpname && net groupmap set "$grpname" "$grpname" if [ $? -eq 0 ]; then zenity --info --text "Buat Grpup $grpname berhasil" else zenity --error --text "Buat Group gagal Bang (mungkin coba lagi) !" fi fi ;; "Masukkan user ke group") LUSERS="" Y=0; for x in `net rpc user -U $USERSMB%$USERSMBPASS | sort`; do LUSER="FALSE $x " LUSERS="$LUSERS $LUSER" Y=$[Y+1] done dus=$(zenity --list --checklist --multiple --height=470 --width=400 --title "$Y Daftar user - PDC server $MYCOMPANY" --text "daftar user" --column "Pilih user" --column "Nama user" $LUSERS); if [ -n "$dus" ]; then LGROUPS="" Y=0; for x in `net rpc group -U $USERSMB%$USERSMBPASS | sort`; do LGROUP="FALSE $x " LGROUPS="$LGROUPS $LGROUP" Y=$[Y+1] done groupselect=$(zenity --list --height=470 --width=400 --radiolist --title "$Y Daftar GROUP - PDC server $MYCOMPANY" --text "daftar group" --column "Lihat member" --column "Nama Group" $LGROUPS); if [ -n "$groupselect" ]; then for x in `echo $dus | sed -e "s/|/\\n/g"` do #In SuSe comment out below #groupmod -A $x $groupselect gpasswd -a $x $groupselect if [ $? -eq 0 ]; then echo "Add user $x to Group $groupselect Successfuly" else zenity --error --text "Proses masukkan user $x ke group $groupselect gagal" fi done fi fi ans="" ;; "Hapus user dari group") LGROUPS="" Y=0; for x in `net rpc group -U $USERSMB%$USERSMBPASS | sort`; do LGROUP="FALSE $x " LGROUPS="$LGROUPS $LGROUP" Y=$[Y+1] done groupselect=$(zenity --list --height=470 --width=400 --radiolist --title "$Y Daftar GROUP - PDC server $MYCOMPANY" --text "daftar group" --column "Lihat member" --column "Nama Group" $LGROUPS); if [ -n $groupselect ]; then users="" for x in `getent group $groupselect | cut -f4 -d: | sed -e "s/\,/\\n/g"` do user="FALSE $x " users="$users $user" done dus=$(zenity --list --checklist --multiple --height=470 --width=400 --title "Daftar anggota group $groupselect" --text "daftar anggota group $groupselect" --column "Pilih untuk dihapus" --column "Nama user" $users); if [ -n $dus ]; then for x in `echo $dus | sed -e "s/|/\\n/g"` do #In SuSe comment out below #groupmod -R $x $groupselect gpasswd -d $x $groupselect if [ $? -eq 0 ]; then echo "Remove user $x from Group $groupselect Successfuly" else zenity --error --text "Proses Hapus user $x dari group $groupselect gagal" fi done fi fi ans="" ;; "Hapus User") for x in `net rpc user -U $USERSMB%$USERSMBPASS | sort`; do LUSER="FALSE $x " LUSERS="$LUSERS $LUSER" Y=$[Y+1] done dus=$(zenity --list --checklist --multiple --height=470 --width=400 --title "$Y Daftar user - PDC server $MYCOMPANY" --text "daftar user" --column "Pilih yang akan dihapus" --column "Nama user" $LUSERS); if [ -n $dus ]; then for x in `echo $dus | sed -e "s/|/\\n/g"` do smbpasswd -x $x && userdel -r $x if [ $? -eq 0 ]; then echo "Remove user $x Successfuly" else zenity --error --text "Proses Hapus user gagal" fi done fi ans="" ;; "Hapus Group") LGROUPS="" Y=0; for x in `net rpc group -U $USERSMB%$USERSMBPASS | sort`; do LGROUP="FALSE $x " LGROUPS="$LGROUPS $LGROUP" Y=$[Y+1] done groupselect=$(zenity --list --height=470 --width=400 --radiolist --title "$Y Daftar GROUP - PDC server $MYCOMPANY" --text "daftar group" --column "Lihat member" --column "Nama Group" $LGROUPS); if [ -n $groupselect ]; then net groupmap delete ntgroup="$groupselect" && groupdel $groupselect if [ $? -eq 0 ]; then echo "Remove Group $groupselect Successfuly" else zenity --error --text "Proses Hapus group gagal" fi fi ans="" ;; *) zenity --info --width=400 --no-wrap --title "Allhamdulillah" --text " Sampai Jumpa Mas/Mba " exit 1; ;; esac done