- Код: выделить все
#!/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