Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1648314
  • 博文数量: 82
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 0
  • 用 户 组: 普通用户
  • 注册时间: 2017-12-09 12:58
文章分类

全部博文(82)

文章存档

2011年(7)

2010年(3)

2009年(11)

2008年(4)

2007年(57)

我的朋友

分类: LINUX

2011-10-21 10:13:33

       因为要管理N多台物理主机,还有一大坨虚拟节点,有时候总是要新增一些磁盘,每次都要上去重新分区、格式化,都要吐了。 所以写了一个脚本减轻工作负担和重复性劳动。

       大体原理是通过expect自动交互执行命令完成的,很简单。小工具包括一个sh脚本、一个exp脚本、一个IP_list文件。和大家分享下,欢迎指正批评。

       脚本如下:
vim ./Auto_partitions.exp
#!/usr/bin/expect
set SIZE ""
set date [exec date "+%Y-%m-%d"]
set DEV [exec fdisk -l | grep "Disk /dev/*" | cut -c 6-13 | grep -v "a" ]
puts "$DEV"
spawn fdisk $DEV
expect "Command (m for help):"
exec sleep 0.5
send "n\r"
expect "*"
send "p\r"
expect "(1-4):"
send "1\r"
expect "default 1):"
send "\r"
expect "*):"
send "\r"
expect "Command (m for help):"
send "w\r"
interact

vim ./Auto_partitions.sh
#!/bin/bash
# By Nick.Ma
# Date : 2011-10-20
# The script is fdisk and format disk.

DIR=$PWD
DATA_DIR="/disk"
SUB_DATA_DIR="$DATE_DIR/data"
source $DIR/import.sh

function chk_expect () {
if [ -e `which expect` ];then
  echo "expect package installed" >> /dev/null
else
  if [ -e `which apt-get` ];then
    apt-get install -y expect
  else
    yun -y install expect acl
  fi
fi
echo -e "Please wait for minutes."
#read -p "Please enter any key to running ..."
sleep 2
echo "Check partition.."
for i in $(fdisk -l | grep "Disk /dev/*" | cut -c 6-13 | grep -v "a")
  do
    echo -e "\t###Partition list###\n\t$i"
done
sleep 2
}
chk_expect

# fdisk disk
expect -f $DIR/Auto_fdisk_format_disk.exp
sleep 2
partprobe
# create directory and mount directory      
mkdir $SUB_DATA_DIR/file{1,2,3,4,5,6}


function mount_partition () {
min=1
while (( $min < 6))
do
  if [ -e "/sbin/mke2fs" ];then
    echo -e "Format partition."
    for i in $(fdisk -l | grep "Disk /dev/*" | cut -c 6-13 | grep -v "a")
      do
         # format partitions
         mke2fs -t ext3 ${i}1
         echo "Format $i finish"
         sleep 2
         mount ${i}1 $SUB_DATA_DIR/file${min}
         echo "${i}1\t$SUB_DATA_DIR/file${min}\text3\tdefaults\t0\t0" >> /etc/fstab
    done &
  else
    echo -e "Format partition."
    for i in $(fdisk -l | grep "Disk /dev/*" | cut -c 6-13 | grep -v "a")
      do
         mkfs -t ext3 ${i}1
         echo "Format $i finish"
         sleep 2
         mount ${i}1 $SUB_DATA_DIR/file${min}
         echo "${i}1\t$SUB_DATA_DIR/file${min}\text3\tdefaults\t0\t0" >> /etc/fstab
    done &
  fi
  min=$((min+1))
done
}
mount_partition

IP_list 还没有真正用到呢,大体用法是借助另一个exp对IP_list所有主机执行SCP命令,复制这个工具包到远程节点,在通过解包、执行sh。
vim ./IP_list
192.168.1.1
192.168.1.2

这个脚本我还没做过优化和调试,呵呵,刚写完的。大体思路是没错的,找时间我会更新,希望和大家一起学习进步。
阅读(1403) | 评论(0) | 转发(0) |
0

上一篇:轻量级DDOS防护

下一篇:linux 网卡分配

给主人留下些什么吧!~~