Скрипты для уравления сервером

Уважаемые коллеги, в процессе создания DS на моем предприятии, я написал несколько простых скриптов, которые немного облегчили и ускорили процесс его создания. Эти скрипты диалоговые, и являются надстройками над скриптами cl-*.
Прошу сильно меня в грязь не окунать, я не претендую на звание хорошего линуксоида, а в свою очередь прошу поделиться вашими разработками на эту тему, или поправить мои. Я, к сожалению мастером в программировании не являюсь.

Итак:

1 скрипт - это для создания статических записей в DHCP. Дело в том, что я при создании сервера, поторопился заполнить DNS сервер всеми записями локальных хостов, что вышло боком при заполнении DHCP. Дело в том, что в CLDS надо только создать зону, а статические записи сами автоматом попадут в DNS! В результате, сне пришлось сперва удалять записи из DNS, а потом заполнять DHCP.
Данный скрипт позволяет в диалоговом режиме заполнить DHCP и DNS.
Как я уже написал выше, если у вас уже имеются записи в DNS и отсутствуют в DHCP - скрипт сам найдет IP и MAC адреса. Для этого достаточно скрипту указать доменное имя (без суфикса) компьютера.
Если компьютер не будет в этот момент включен, вы в диалоге сами можете указать его мак и другие данные.

#!/bin/sh

DOMAIN="domain.net"
SEGMENT="192.168.5"

#if [ $1="--help" ];then
    #echo "Для корректной работы 3 и 4 строчку в скрипте"
    #echo "DS-DHCP <name station> <last nubber IP> <mac>"
    #echo "Пример: DS-DHCP petrov 13 00:21:5E:53:C4:70"
    #exit
#fi

while : 
do

if [ "$DISPLAY" != "" ]
then
    DIALOG="dialog"
else
    DIALOG="dialog"
fi
OPTS=" --backtitle DHCP_Administrator --clear"

    $DIALOG $OPTS --inputbox "Название хоста" 10 60 "$1" 2>/tmp/name.$$
    if [ $1 ];then
        ipseg="`host $1 | sed -r s/.*$SEGMENT\.//`"
        else
        ipseg=$2
    fi

    $DIALOG $OPTS --inputbox "IP`host $1`" 10 60 "$SEGMENT.$ipseg" 2>/tmp/ip.$$
    if [ $1 ];then
        mac="`ping -c1 $1 >/dev/null && arp $1 | grep $1.$DOMAIN | sed -r s/^.*ether...// | sed s/...C.*$//`"
    else
    mac=$3
    fi
    $DIALOG $OPTS --inputbox "MAC" 10 60 "$mac" 2>/tmp/mac.$$
    $DIALOG $OPTS --yesno "Сейчас в DHCP $DOMAIN будет введен новый статический хост.\n 
Name: `cat /tmp/name.$$` 
Ip:  `cat /tmp/ip.$$`\n
MAC: `cat /tmp/mac.$$`\n

Создать запись в DHCP?" 15 60 
    if [ $? = "0" ]
            then
        name="`cat /tmp/name.$$`"
        ip="`cat /tmp/ip.$$`"
        mac="`cat /tmp/mac.$$`"

        #echo "Name:$name, ip:$ip, mac:$mac">test.txt
    clear

        host $ip && cl-dns-recdel --ip $ip 
        host $name.$DOMAIN && cl-dns-recdel --host $name.$DOMAIN 
        #cat /etc/dhcp/dhcpd.conf | grep -E 'host $name ' && cl-dhcp-hostdel --host $name 
        cl-dhcp-hostdel --host $name 
        cl-dhcp-hostadd --host $name --ip $ip --mac $mac || exit
    sleep 3 

       $DIALOG $OPTS --msgbox "Запись создана." 10 60
    fi    

    $DIALOG --title " Добавить еще хост?" --clear 
        --yesno "Добавление нового хоста (X)dialog" 10 40 


case $? in
    0)
        #echo "Выбрано 'Да'."&& /usr/local/bin/DHCP-add ;;
        echo "Выбрано 'Да'."&& /usr/local/bin/DHCP-add;;
    1)
        echo "Выбрано 'Нет'.";;
    255)
        echo "Нажата клавиша ESC.";;
esac

    exit
done

зы
Как в bash правильно проверять переменные?

if [ $1="--help" ];then

судя по всему не правильно :slight_smile:

Теперь добавление A записи:

#!/bin/sh
while : 
do
DOMAIN="domain.net"
SEGMENT="192.168.5"
if [ "$DISPLAY" != "" ]
then
    DIALOG="dialog"
else
    DIALOG="dialog"
fi
OPTS=" --backtitle DNS_Administrator --clear"

    $DIALOG $OPTS --inputbox "Название хоста" 10 60 "$1.$DOMAIN" 2>/tmp/name.$$
    $DIALOG $OPTS --inputbox "IP" 10 60 "$SEGMENT.$2" 2>/tmp/ip.$$
    $DIALOG $OPTS --yesno "Сейчас в DNS зону $DOMAIN будет введена запись \nA и PTR.\n 
Name: `cat /tmp/name.$$` 
Ip: `cat /tmp/ip.$$`\n

Создать запись?" 15 60 
    if [ $? = "0" ]
    then
    name="`cat /tmp/name.$$`"
    ip="`cat /tmp/ip.$$`"

    #echo "Name:$name, ip:$ip">lststring-a-ptr.txt
    clear
    cl-dns-recadd --host $name --ip $ip || exit
    sleep 3

       $DIALOG $OPTS --msgbox "Запись создана." 10 60
    fi    

    $DIALOG --title " Добавить еще хост?" --clear 
        --yesno "Добавление нового хоста (X)dialog" 10 40


case $? in
    0)
        echo "Выбрано 'Да'."&& /usr/local/bin/DNS-A-string ;;
    1)
        echo "Выбрано 'Нет'.";;
    255)
        echo "Нажата клавиша ESC.";;
esac

    exit
done

для Cname

#!/bin/sh
DOMAIN="domain.net"
SEGMENT="192.168.5"


while : 
do

if [ "$DISPLAY" != "" ]
then
    DIALOG="dialog"
else
    DIALOG="dialog"
fi
OPTS=" --backtitle DNS_Administrator --clear"

    $DIALOG $OPTS --inputbox "Название CNAME" 10 60 "$1.$DOMAIN" 2>/tmp/name.$$
    $DIALOG $OPTS --inputbox "ОТ существующей A записи" 10 60 "$2.$DOMAIN$DOMAIN" 2>/tmp/cname.$$
    $DIALOG $OPTS --yesno "Сейчас в DNS зону $DOMAIN будет введена CNAME запись.\n 
CNAME: `cat /tmp/name.$$` 
A: `cat /tmp/cname.$$`\n

Создать CNAME запись?" 15 60 
    if [ $? = "0" ]
    then
    name="`cat /tmp/name.$$`"
    cname="`cat /tmp/cname.$$`"

    #echo "Name:$name, cname:$cname">lststring-a-ptr.txt
    clear
    cl-dns-recadd -t cname --host $name --cname $cname
    sleep 3

       $DIALOG $OPTS --msgbox "Запись создана." 10 60
    fi    

    $DIALOG --title " Добавить еще хост?" --clear 
        --yesno "Добавление нового хоста (X)dialog" 10 40


case $? in
    0)
        echo "Выбрано 'Да'."&& /usr/local/bin/DNS-CNAME-string ;;
    1)
        echo "Выбрано 'Нет'.";;
    255)
        echo "Нажата клавиша ESC.";;
esac

    exit
done

Удаление A записи

#!/bin/sh

DOMAIN="domain.net"
SEGMENT="192.168.5"

while : 
do

if [ "$DISPLAY" != "" ]
then
    DIALOG="dialog"
else
    DIALOG="dialog"
fi
OPTS=" --backtitle DNS_Administrator --clear"

    $DIALOG $OPTS --inputbox "Название хоста" 10 60 "$1.$DOMAIN" 2>/tmp/name.$$
    $DIALOG $OPTS --yesno "Сейчас будет удалена A или CNAME запись \nиз зоны $DOMAIN.\n 
Ip: `cat /tmp/name.$$`\n

Удление записи DNS A или CNAME!" 15 60 
    if [ $? = "0" ]
    then
    name="`cat /tmp/name.$$`"

    echo "Name:$name">string-del-a-cname.txt
    clear
    cl-dns-recdel --host $name
    sleep 3

       $DIALOG $OPTS --msgbox "Запись А или CNAME  Удалена!" 10 60
    fi    

    $DIALOG --title " Удалить  еще хост?" --clear 
        --yesno "Удалить еще PTR запись хоста (X)dialog" 10 40


case $? in
    0)
        echo "Выбрано 'Да'."&& /usr/local/bin/DNS-Del-PTR ;;
    1)
        echo "Выбрано 'Нет'.";;
    255)
        echo "Нажата клавиша ESC.";;
esac

    exit
done

А налогично удаляется и PTR

Добавление пользователя в самбу (в Unix аналогично)

#!/bin/sh
while : 
do

if [ "$DISPLAY" != "" ]
then
    DIALOG="dialog"
else
    DIALOG="dialog"
fi
OPTS=" --backtitle User_Administrator --clear"

    $DIALOG $OPTS --inputbox "Please choose a login name to add." 10 60 "$1" 2>/tmp/user.$$
    $DIALOG $OPTS --inputbox "Please choose the initial group to \n add the user to. Default is given." 10 60 "manager" 2>/tmp/group.$$
    $DIALOG $OPTS --inputbox "Please choose full-name \n add the user to. Default is given." 10 60  2>/tmp/fullname.$$
    $DIALOG $OPTS --yesno "The following information will be used to create the \nnew user.\n 
Name: `cat /tmp/user.$$` 
Default group: `cat /tmp/group.$$`\n

Go ahead and create this account?" 15 60 
    if [ $? = "0" ]
    then
    user="`cat /tmp/user.$$`"
    group="`cat /tmp/group.$$`"
    fullname="`cat /tmp/fullname.$$`"

    #echo "User:$user, group:$group fullname:$fullname ">lastuser-samba.txt

    /usr/bin/cl-useradd -p -c "$fullname" -g $group -p  $user samba


       $DIALOG $OPTS --msgbox "Пользователь создан." 10 60
    fi    

$DIALOG --title " Добавить еще пользователя?" --clear 
        --yesno "Добавление нового пользователя (X)dialog" 10 40

case $? in
    0)
        echo "Выбрано 'Да'."&& /usr/local/bin/UserAddSamba ;;
    1)
        echo "Выбрано 'Нет'.";;
    255)
        echo "Нажата клавиша ESC.";;
esac

    exit
done

Последний скрипт не диалоговый пока, но он очень нужен для того, чтобы временно предоставить простому юзеру админа. Это необходимо для настройки его рабочий станции.

#!/bin/bash
if [ $1 ];then 
    cl-usermod -g 'Domain Admins' $1 samba
    cl-info -U $1 samba
else
    echo "Введите имя пользователя"
fi

Разжуйте пож. (в никсах ноль, только учусь) как всю эту красоту запускать. В каком редакторе лучше набрать (или скопировать текст), как обозвать скрипт, куда сохранить и как, в конце концов, запустить на выполнение.

Прошу прощения у сообщества. Поторопился. Полистал букварь и нашел как работать со скриптами.