0
点赞
收藏
分享

微信扫一扫

Shell脚本部署ISCSI服务

#!/bin/bash
#AUTHOR:AN
#DATE:2019-06-02
#MODIFY:
#FUNCTION:
#DESCRIBE:整个磁盘为一个分区
#PEOBLEM:

Local_Dir=`pwd` #当前目录
#加载函数库
if [ -f "$Local_Dir/myfunction.lib" ];then
source $Local_Dir/myfunction.lib
else
echo -e "\033[31m函数库不存在\033[0m"
exit $NOEXIST
fi

#$1磁盘;$2分区大小
partition(){
#提取一个未分区的磁盘(以后可能用得上)
#lsblk |grep '^vd[a-z]' |awk '{print $1}' >$Local_Dir/tmp.txt #提取磁盘名
#while read -r line
#do
# parted /dev/$line print |grep primary &>/dev/null
# [ $? -eq 0 ] && continue
# disk=/dev/$line
# echo $disk
# [ -n "$disk" ] && break
#done < $Local_Dir/tmp.txt
##############################################################
#进行分区
DISK=$1
disk=`basename $DISK`
lsblk |grep $disk &>/dev/null
[ $? -ne 0 ] && cecho 31 "$1不存在" && exit $NOEXIST
parted $1 mkpart primary 1 $2 &>/dev/null
[ $? -ne 0 ] && parted $1 mklabel gpt &>/dev/null && parted $1 mkpart primary 1 $2 &>/dev/null
}

server(){
partition $1 $2
YUM targetcli
YUM expect
Date=`date +%Y-%m`
expect << EOF
spawn targetcli
expect " " {send "backstores/block create store ${DISK}1\r"}
expect ">" {send "iscsi/ create iqn.$Date.cn.tedu:server0\r"}
expect ">" {send "iscsi/iqn.$Date.cn.tedu:server0/tpg1/luns create /backstores/block/store\r"}
expect ">" {send "iscsi/iqn.$Date.cn.tedu:server0/tpg1/acls create iqn.2019-04.cn.tedu:desktop0\r"}
expect ">" {send "saveconfig\r"}
expect ">" {send "exit\r"}
expect ">" {send "exit\r"}
EOF
systemctl restart target
systemctl enable target
CA_SERVICE :3260
}

client(){
YUM iscsi-initiator-utils
Disk_Count1=`lsblk |awk '{print $1}' |awk '/^.{3}$/' |wc -l`
sed -i '$ c InitiatorName=iqn.2019-04.cn.tedu:desktop0' /etc/iscsi/initiatorname.iscsi
iscsiadm -m discovery -t st -p $1 &>/dev/null
[ $? -ne 0 ] && cecho 31 "[ERROR]" && exit $ISERROR
#STR_SVC iscsi
systemctl restart iscsi
Disk_Count2=`lsblk |awk '{print $1}' |awk '/^.{3}$/' |wc -l`
[ "$Disk_Count2" -gt "$Disk_Count1" ] && cecho 36 "[OK]"
}

Help(){
cat << EOF
ISCSI version 1.0.0
Usage: ISCSI [--help] [-m mode] [-b block device] [-s size] [-A address]
=======================================================================
optional arguments:
-h 提供帮助信息
-m 选择模式:服务端(s)/客户端(c)
-b 磁盘名
-s 磁盘大小(如50%)
-A IP地址
EOF
}

#############################主程序#############################
clear
cecho 36 "*******************#一键部署ISCSI#********************" #深绿色
echo
while getopts :hmode:b:s:A: ARGS
do
case $ARGS in
h)
Help;;
mod|e)
Mode=$OPTARG;;
b)
Disk=$OPTARG;;
s)
Size=$OPTARG;;
A)
IP=$OPTARG;;
esac
done

case $Mode in
s)
server $Disk $Size;;
c)
client $IP;;
*)
cecho 31 "Invalid option:`basename $0` [-h]"
esac


举报

相关推荐

0 条评论