LINUX.ORG.RU

Кому скрипты, заходите сюда.


0

0

#! /usr/bin/perl
#
# Скрипт для ввода учетной записи ПК (домен NT)
#

#ввод имени,полного имени и группы
print 'Enter name (without $) :';
chomp ($name_ = <STDIN>);
print "Enter full name :";
chomp ($full_name_ = <STDIN>);
print "Enter group :";
chomp ($gr_ = <STDIN>);


#чтение в массив
open (fh,"/etc/master.passwd") || die ("Can't open file master.passwd");
@pswd=<fh>;
close(fh);
open (fh,"/etc/group") || die ("Can't open file group ");
@grp=<fh>;
close(fh);

#поиск имени новой учетной записи в master.passwd
$met=0;
foreach (@pswd) {
   @kk=split(/:/,$_);
   if (@kk[0] eq $name_.'$') {
   $met=1;
   }
}

if ($met==0) {
	#определение следующего ID для новой учетной записи
	$i=@pswd-1;
	@idkod=split(/:/,@pswd[$i]);
	$idkod=@idkod[2]+1;

	#определение ID введенной группы
	foreach (@grp) {   
	   @mas=split(/:/,$_);
	   if (@mas[0] eq $gr_) {
	         $num=@mas[2];
	   };
	};

	#формирование нового элемента массива (новой учетной записи)
	$lf=chr(10);
	@pswd[$i+1]=$name_.'$::'.$idkod.":".$num."::0:0:".$full_nam
e_.":/dev/nul:/bin/date".$lf;

	#Перезапись master.passwd из дополненного массива 
	open (fh,">/etc/master.passwd");
	print fh $_ foreach (@pswd);
	close(fh);
	print chr(10);
	print '-------------------'.chr(10);
	print " Add new username! ".chr(10);
	print '-------------------'.chr(10);
	@sys[0]="pwd_mkdb -p /etc/master.passwd";
#	@sys[0]="date";
	exec @sys;
} else {
	print chr(10);
	print '----------------------'.chr(10);
	print " Name already exists! ".chr(10);
	print '----------------------'.chr(10);
}

#!/bin/bash
# addgroup.sh
# v1.0
RETVAL=0
MSG="success"
groupname="$1"
test -z "$groupname" && exit 1

if [ $RETVAL -eq 0 ]; then
    /etc/samba/scripts/checkmap.pl
    RETVAL=$?
    [ $RETVAL -ne 0 ] && MSG="checkmap failed [$RETVAL]"
fi

groupname=`echo "$groupname"|sed -e "s/[^0-9a-zA-Z]/_/g"`
groupname=`echo "$groupname"|sed -e "s/^[^a-zA-Z]*//"`
grplist=`grep "$groupname" /etc/group|awk -F : '{print $1}'`
if [ $RETVAL -eq 0 -a -z "$grplist" ]; then
    /usr/sbin/groupadd "$groupname"
    RETVAL=$?
    [ $RETVAL -ne 0 ] && MSG="groupadd failed [$RETVAL]"
fi

gid=`grep "$groupname" /etc/group|awk -F : '{print $3}'`
echo $gid
echo `date`" Add group '$groupname': $MSG" \
    >> /etc/samba/scripts/log
exit 0 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

fozi
() автор топика
Ответ на: комментарий от fozi

#!/bin/bash
# addmachine.sh
# v1.0
RETVAL=0
MSG="success"
machinename="$1"
test -z "$machinename" && exit 1

if [ $RETVAL -eq 0 ]; then
    /etc/samba/scripts/checkmap.pl
    RETVAL=$?
    [ $RETVAL -ne 0 ] && MSG="checkmap failed [$RETVAL]"
fi

if [ $RETVAL -eq 0 ]; then
    /usr/sbin/useradd -g nogroup -d /dev/null -s /bin/false "$machinename"
    RETVAL=$?
    [ $RETVAL -ne 0 ] && MSG="useradd failed [$RETVAL]"
fi

if [ $RETVAL -eq 0 ]; then
    /usr/bin/passwd -l "$machinename"
    RETVAL=$?
    [ $RETVAL -ne 0 ] && MSG="passwd failed [$RETVAL]"
fi
    
echo `date`" Add machine '$machinename' account: $MSG" \
    >> /etc/samba/scripts/log
exit 0 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

fozi
() автор топика
Ответ на: комментарий от fozi

#!/bin/bash
# addusertogroup.sh
# v1.20
RETVAL=0
MSG="success"
username="$1"
groupname="$2"
test -z "$username" || test -z "$groupname" && exit 1

if [ $RETVAL -eq 0 ]; then
    /etc/samba/scripts/checkmap.pl
    RETVAL=$?
    [ $RETVAL -ne 0 ] && MSG="checkmap failed [$RETVAL]"
fi

groups=`cat /etc/group | grep "[,:]$username" | cut -d ':' -f 1 | tr '\n' ','`
groups="$groups$groupname"
if [ $RETVAL -eq 0 ]; then
    /usr/sbin/usermod -G "$groups" "$username"
    RETVAL=$?
    [ $RETVAL -ne 0 ] && MSG="usermod failed [$RETVAL]"
fi

echo `date`" Add '$username' user to '$groupname' group: $MSG" \
    >> /etc/samba/scripts/log
exit 0 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

fozi
() автор топика
Ответ на: комментарий от fozi

#! /usr/bin/perl # # Скрипт для ввода учетной записи ПК (домен NT) #

#ввод имени,полного имени и группы print 'Enter name (without $) :'; chomp ($name_ = <STDIN>); print "Enter full name :"; chomp ($full_name_ = <STDIN>); print "Enter group :"; chomp ($gr_ = <STDIN>);

#чтение в массив open (fh,"/etc/master.passwd") || die ("Can't open file master.passwd"); @pswd=<fh>; close(fh); open (fh,"/etc/group") || die ("Can't open file group "); @grp=<fh>; close(fh);

#поиск имени новой учетной записи в master.passwd $met=0; foreach (@pswd) { @kk=split(/:/,$_); if (@kk[0] eq $name_.'$') { $met=1; } }

if ($met==0) { #определение следующего ID для новой учетной записи $i=@pswd-1; @idkod=split(/:/,@pswd[$i]); $idkod=@idkod[2]+1;

#определение ID введенной группы foreach (@grp) { @mas=split(/:/,$_); if (@mas[0] eq $gr_) { $num=@mas[2]; }; };

#формирование нового элемента массива (новой учетной записи) $lf=chr(10); @pswd[$i+1]=$name_.'$::'.$idkod.":".$num."::0:0:".$full_nam e_.":/dev/nul:/bin/date".$lf;

#Перезапись master.passwd из дополненного массива open (fh,">/etc/master.passwd"); print fh $_ foreach (@pswd); close(fh); print chr(10); print '-------------------'.chr(10); print " Add new username! ".chr(10); print '-------------------'.chr(10); @sys[0]="pwd_mkdb -p /etc/master.passwd"; # @sys[0]="date"; exec @sys; } else { print chr(10); print '----------------------'.chr(10); print " Name already exists! ".chr(10); print '----------------------'.chr(10); } +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

fozi
() автор топика
Ответ на: комментарий от fozi

sub check_name{
    my ($name) = @_;
    $name =~ s#[^0-9a-zA-Z_]#_#g;
    $name =~ s#^[^a-zA-Z]*##;
    return substr($name,0,16);
}

sub get_unixgroup{
    my $group_ref = shift;
    unless (open(GROUP,'/etc/group')){
	warn "Couldn't open /etc/group: $!\n";
	return 0;
    }
    my ($line,@fields);
    while ($line = <GROUP>){
	chomp($line);
	@fields = split(':',$line);
	next unless @fields;
	$group_ref->{$fields[0]} = [ @fields ];
    }
    close(GROUP);
    return 1;
}

sub get_groupmap{
    my $map_ref = shift;
    unless (open(NET,"$path2net groupmap list|")){
	warn "Couldn't read $path2net: $!\n";
	return 0;
    }
    my @map = <NET>;
    close(NET);
    map { chomp; /(^.+?)\s\(.+?\)\s-\>\s(.*)/; $map_ref->{$1} = $2
	unless exists($map_ref->{$1}) } @map;
    return 1;
} 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

fozi
() автор топика
Ответ на: комментарий от fozi

#!/bin/bash
# delgroup.sh
# v1.0
RETVAL=0
MSG="success"
groupname="$1"
test -z "$groupname" && exit 1

if [ $RETVAL -eq 0 ]; then
    /etc/samba/scripts/checkmap.pl
    RETVAL=$?
    [ $RETVAL -ne 0 ] && MSG="checkmap failed [$RETVAL]"
fi

grplist=`grep "$groupname" /etc/group|awk -F : '{print $1}'`
if [ $RETVAL -eq 0 -a ! -z "$grplist" ]; then
   /usr/sbin/groupdel "$groupname"
   RETVAL=$?
   [ $RETVAL -ne 0 ] && MSG="groupdel failed [$RETVAL]"
fi
echo `date`" Del group '$groupname': $MSG" \
    >> /etc/samba/scripts/log
exit 0
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

fozi
() автор топика
Ответ на: комментарий от fozi

#!/bin/bash
# deluser.sh
# v1.01
RETVAL=0
MSG='success'
username="$1"
test -z "$username" && exit 1

if [ $RETVAL -eq 0 ]; then
    /etc/samba/scripts/checkmap.pl
    RETVAL=$?
    [ $RETVAL -ne 0 ] && MSG="checkmap failed [$RETVAL]"
fi

if [ $RETVAL -eq 0 ]; then
    /usr/sbin/userdel "$username"
    RETVAL=$?
    [ $RETVAL -ne 0 ] && MSG="userdel failed [$RETVAL]"
fi
    
echo `date`" Del user '$username' account: $MSG" \
    >> /etc/samba/scripts/log
exit 0 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

fozi
() автор топика
Ответ на: комментарий от fozi

#!/bin/bash
# deluserfrgroup.sh
# v1.20
RETVAL=0
MSG="success"
username="$1"
groupname="$2"
test -z "$username" || test -z "$groupname" && exit 1

if [ $RETVAL -eq 0 ]; then
    /etc/samba/scripts/checkmap.pl
    RETVAL=$?
    [ $RETVAL -ne 0 ] && MSG="checkmap failed [$RETVAL]"
fi

groups=`cat /etc/group | grep "[,:]$username" | cut -d ':' -f 1 | tr '\n' ','`
groups=`echo -n "$groups" | sed -e "s/$groupname,//g"`
groups=`echo -n "$groups" | sed -e 's/,$//'`
if [ $RETVAL -eq 0 ]; then
    /usr/sbin/usermod -G "$groups" "$username"
    RETVAL=$?
    [ $RETVAL -ne 0 ] && MSG="usermod failed [$RETVAL]"
fi

echo `date`" Del '$username' user from '$groupname' group: $MSG" \
    >> /etc/samba/scripts/log
exit 0 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

fozi
() автор топика
Ответ на: комментарий от fozi

#!/bin/bash
# setprimarygroup.sh
# v1.0
RETVAL=0
MSG="success"
username="$1"
groupname="$2"
test -z "$username" || test -z "$groupname" && exit 1

if [ $RETVAL -eq 0 ]; then
    /etc/samba/scripts/checkmap.pl
    RETVAL=$?
    [ $RETVAL -ne 0 ] && MSG="checkmap failed [$RETVAL]"
fi

if [ $RETVAL -eq 0 ]; then
    /usr/sbin/usermod -g "$groupname" "$username"
    RETVAL=$?
    [ $RETVAL -ne 0 ] && MSG="usermod failed [$RETVAL]"
fi 

echo `date`" Set '$groupname' as user's '$username' primary group: $MSG" \
    >> /etc/samba/scripts/log
exit 0 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Если что, факайте. Не обижусь.

fozi
() автор топика
Ответ на: комментарий от sdio

К сожелению нету манов. Я б дал мне не жалко

fozi
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.