Скрипты для FreeBSD

Установка, настройка, эксплуатация.

Модератор: ROOT

Скрипты для FreeBSD

Сообщение ROOT » 14 ноя 2013, 18:21

Уставновка на ZFS
Код: выделить все
#!/bin/sh
# Vars
dev=ada0
pool=armor
if_wan=em0
hostname=srv
user=sergey
ipadd="inet 195.0.1.8/24"
router="195.0.1.2"
doman_s="serg.ru"
dns="195.0.1.2"
####################################################
gpart destroy -F $dev
sleep 1
# gpart
echo "script: Create GPT, add partitions..."
gpart create -s GPT $dev
gpart add -b 40 -s 1024 -t freebsd-boot $dev
gpart add -b 2048 -s 4G -t freebsd-swap -l swap0 $dev
gpart add -t freebsd-zfs -l data0 $dev

echo "#"
echo "# script: GPT on $dev created, partitions added."
echo "#"
sleep 5

gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 $dev
gpart show $dev
sleep 5
####################################################
# Create ZFS pool
echo "#"
echo "# script: Create ZFS pool..."
echo "#"
zpool create -f $pool /dev/gpt/data0
zpool set bootfs=$pool $pool
sleep 3
####################################################
# Create ZFS-filesystem
echo "#"
echo "# script: Create filesystem..."
echo "#"
zfs set atime=off $pool
zfs set checksum=fletcher4 $pool
zfs set mountpoint=/mnt $pool

# Export and import the pool
zpool export $pool
zpool import -o cachefile=/var/tmp/zpool.cache $pool
zfs create -o compression=on -o exec=on -o setuid=off $pool/tmp
chmod 1777 /mnt/tmp

zfs create $pool/usr
zfs create $pool/usr/home

cd /mnt ; ln -s /usr/home home
zfs create -o compression=off -o setuid=off $pool/usr/ports
zfs create -o compression=off -o exec=off -o setuid=off $pool/usr/ports/distfiles
zfs create -o compression=off -o exec=off -o setuid=off $pool/usr/ports/packages
zfs create -o compression=lzjb -o exec=off -o setuid=off $pool/usr/src
zfs create $pool/var
zfs create -o compression=lzjb -o exec=off -o setuid=off $pool/var/crash
zfs create -o exec=off -o setuid=off $pool/var/db
zfs create -o compression=lzjb -o exec=on -o setuid=off $pool/var/db/pkg
zfs create -o exec=off -o setuid=off $pool/var/empty
zfs create -o compression=lzjb -o exec=off -o setuid=off $pool/var/log
zfs create -o compression=gzip -o exec=off -o setuid=off $pool/var/mail
zfs create -o exec=off -o setuid=off $pool/var/run
zfs create -o compression=lzjb -o exec=on -o setuid=off $pool/var/tmp
chmod 1777 /mnt/var/tmp
sleep 3
####################################################
clear
echo "#"
echo "# script: ZFS-filesystem structure:"
echo "#"
zfs list
sleep 15
clear
####################################################
# install base system
echo "#"
echo "# script: Install base system..."
echo "#"
cd /usr/freebsd-dist
export DESTDIR=/mnt
for file in base.txz doc.txz kernel.txz ports.txz src.txz lib32.txz; do (cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}) ; done
echo "#"
echo "# script: System has bin installed..."
echo "#"
sleep 1
####################################################
echo "#"
echo "# script: Copy zpool cache..."
echo "#"
cp /var/tmp/zpool.cache /mnt/boot/zfs/zpool.cache
sleep 1
####################################################
# install base config
echo "#"
echo "# script: Install base config..."
echo "#"
cat << EOF > /mnt/etc/rc.conf
### ZFS ###
zfs_enable="YES"

#
# NET OPTIONS
#
hostname="$hostname"

### SCREEN MODE ###
allscreens_flags="MODE_324"

### RUS ###
font8x14="cp866-8x14"
font8x16="cp866-8x16"
font8x8="cp866-8x8"
scrnmap="koi8-r2cp866"
keymap="ru.koi8-r.win"
moused_enable="YES"

###clear tmp###
clear_tmp_enable="YES"

### NET  ####
ifconfig_$if_wan="$ipadd"
defaultrouter="$router"

sshd_enable="YES"
EOF
echo "Created /etc/rc.conf"
####################################################
echo 'zfs_load="YES"' > /mnt/boot/loader.conf
echo "vfs.root.mountfrom=\"zfs:$pool\"" >> /mnt/boot/loader.conf
echo 'vfs.zfs.prefetch_disable=1' >> /mnt/boot/loader.conf
echo 'vm.kmem_size="1500M"' >> /mnt/boot/loader.conf
echo 'vm.kmem_size_max="1500M"' >> /mnt/boot/loader.conf
echo 'vfs.zfs.arc="1024M"' >> /mnt/boot/loader.conf
echo 'vfs.zfs.arc_max="1024M"' >> /mnt/boot/loader.conf
echo 'vfs.zfs.vdev.cache.size="20M"' >> /mnt/boot/loader.conf
echo 'loader_logo="beastie"' >> /mnt/boot/loader.conf
echo 'loader_color="YES"' >> /mnt/boot/loader.conf
echo 'autoboot_delay="5"' >> /mnt/boot/loader.conf
echo "Created /boot/loader.conf"
sleep 1
echo "#"
echo "# script: Make fstab..."
echo "#"
cat << EOF > /mnt/etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/gpt/swap0 none swap sw 0 0
EOF
echo "Created /etc/fstab"
####################################################
echo "search $doman_s" >> /mnt/etc/resolv.conf
echo "nameserver $dns" >> /mnt/etc/resolv.conf
echo "Created /etc/resolv.conf"
sleep 1
clear
####################################################
echo "#"
echo "# script: Choice your time zone..."
echo "#"
sleep 1
chroot /mnt/ tzsetup
echo "#"
echo "# script: root password"
echo "#"
chroot /mnt/ passwd root
echo "#"
echo "# script: Add user $user"
echo "#"
chroot /mnt/ pw useradd $user -G wheel -s /bin/csh -m
chroot /mnt/ passwd $user
####################################################
# correct ZFS mount points and quotas
echo "#"
echo "# script: Set mount points and quotas..."
echo "#"
zfs unmount -af
zfs set mountpoint=legacy $pool
zfs set mountpoint=/usr $pool/usr
zfs set quota=4G $pool/tmp && zfs set mountpoint=/tmp $pool/tmp
zfs set quota=4G $pool/var && zfs set mountpoint=/var $pool/var
sleep 5
clear
####################################################
zpool status
sleep 5

clear
echo "script: done!"

Установка через SSH
Код: выделить все
#!/bin/sh
hostname test

mkdir /tmp/etc
mount_unionfs /tmp/etc /etc

sed -i .bak -e 's/#PermitRootLogin no/PermitRootLogin yes/g' /etc/ssh/sshd_config

/etc/rc.d/sshd onestart

ifconfig em0 inet 195.0.1.8 netmask 255.255.255.0 up
route add default 195.0.1.2

passwd root


Отключить IPFW можно с помощью скрипта
Код: выделить все
#!/bin/sh/
exec /sbin/ipfw disable firewall

или просто из shell
Код: выделить все
ipfw disable firewall


Сканирование MAC-адресов по списку IP-адресов/DNS-имён из файла
Код: выделить все
#!/bin/sh
##############################################
# Сканирование MAC-адресов по списку из файла
# Составлено: SSERGEY
# Дата: 29.12.2014 v1.0
# /usr/ports/net/arping && make install clean
#############################################
while read LINE; do
    LINE2=`echo ${LINE}|grep -E -o "(^[0-9]{1,3}[\.])([0-9]{1,3}[\.])([0-9]{1,3}[\.])([0-9]{1,3})"`
    if [ "$LINE" == "$LINE2" ]
    then
        arp=`arping -c1 -r ${LINE}`
        if [ $? = 0 ]
        then
            echo $arp $LINE
        fi
   fi
done < ip-list

Используется утилита arping. Установка из порта
Код: выделить все
/usr/ports/net/arping && make install clean


Ping по списку IP-адресов/DNS-имён из файла. поиск в прямой и обратной DNS-зоне
Код: выделить все
#!/bin/sh
##############################################
# PING по IP из списка в файле, поиск в прямой
# и обратной DNS-зоне
# Составлено: SSERGEY
# Дата: 29.12.2014 v1.0
# /usr/ports/net/fping/ && make install clean
#############################################
while read LINE; do
    LINE2=`echo ${LINE}|grep -E -o "(^[0-9]{1,3}[\.])([0-9]{1,3}[\.])([0-9]{1,3}[\.])([0-9]{1,3})"`
    if [ "$LINE" == "$LINE2" ]
    then
        fping -ac 1 $LINE 2> /dev/null
        if [ $? = 0 ]
        then
            printf "Пингуется $LINE  "
            dns=`host $LINE`
            if [ $? = 0 ]
            then
                dns=`echo $dns|cut -f 5 -d ' '|sed 's/.$//'|cut -f 1 -d ' '` #только одно имя
                printf "DNS-имя $dns "
                ptr=`host $dns`
                if [ $? = 0 ]
                then
                    ptr=`echo $ptr|cut -f 4 -d ' '`
                    printf "PTR-запись $ptr \n"
                    echo ====================================
                fi
            fi
        fi
    fi
done < ip-list


Используется утилита fping. Установка из порта
Код: выделить все
/usr/ports/net/fping/ && make install clean
Для желающих поддержать
Карта SB: 5469 4009 6510 2267
Аватар пользователя
ROOT
Администратор
 
Сообщений: 417
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Вернуться в FreeBsd

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron