- 论坛徽章:
- 0
|
求助高手指点,下面的程序如何修改:
功能:在duty_list.txt文件是运维人员每天的白班、夜班排班信息,希望通过每天两次定时执行脚yunwei_update.sh抽取数据,每天0:01执行脚本,抽取duty_list.txt当天日期“夜班”的一行数据;每天8:30执行脚本抽取duty_list.txt当天日期“白班”的一行数据,分别对运维人员姓名DutyEngineer和手机号DutyEngineer_Phone进行更新。
目前的脚本实现了按系统日期抽取数据更新字段信息,请教如何实现从duty_list.txt文本抽取夜班、白班字段的数据?
(1) #more duty_list.txt
##部门名称,人员姓名,日期,时间段,手机号,班次
网络部 张三,李四,王五 2018-03-21 0:00~8:29 18711111111,18711111112,18711111113 夜班
网络部 张三,李四,赵六 2018-03-21 8:30~23:59 18711111111,18711111112,18711111114 白班
网络部 张三,李四,王五 2018-03-22 0:00~8:29 18711111111,18711111112,18711111113 夜班
网络部 李四,赵六,刘磊 2018-03-22 8:30~23:59 18711111112,18711111114,18711111115 白班
网络部 张三,李四,吴雨 2018-03-23 0:00~8:29 18711111111,18711111112,18711111123 夜班
网络部 黄明,李四,赵六,刘磊 2018-03-23 8:30~23:59 18711111119,18711111112,18711111113,18711111115 白班
(2)#more yunwei_update.sh
#!/bin/sh
###############################
source /home/netcool/.profile
currentdate=`date +%Y-%m-%d`
#从duty_list.txt的表中取出部门名称,值班人员名称,值班手机号
firstorgname=$(awk -v time=`date +%F` '$3~time{print $1}' /backup/yunwei/duty_list.txt)
echo $firstorgname
dutyname=$(awk -v time=`date +%F` '$3~time{print $2}' /backup/yunwei/duty_list.txt)
echo $dutyname
dutymobile=$(awk -v time=`date +%F` '$3~time{print $5}' /backup/yunwei/duty_list.txt)
echo $dutymobile
#定时执行脚本每天0:01 抽取duty_list.txt当天日期夜班的一行数据;每天8:30抽取duty_list.txt当天日期白班的一行数据,分别对运维人员姓名DutyEngineer和手机号DutyEngineer_Phone进行更新
/opt/IBM/tivoli/netcool/omnibus/bin/nco_sql -server TESTOS -username oper -password xxxxxxx <<EOF >>/tmp/DutyList.log
update alerts.status set DutyEngineer_Phone='$dutymobile',DutyEngineer='$dutyname' where FirstOrgName like 'Beijing' and Severity>=4 and to_char(getdate,'yyyy-MM-dd') like '$currentdate' and DutyEngineer not like '$dutyname';
go
quit
EOF
下面是duty_list.txt值班人员的排班信息(用TAB隔开):
举例:
系统日期是2018-03-22,crontab定时脚本
在0:01抽取文件中“夜班”这一行的数据:
网络部 张三,李四,王五 2018-03-22 0:00~8:29 18711111111,18711111112,18711111113 夜班
在8:30抽取文件中“白班”这一行的数据:
网络部 李四,赵六,刘磊 2018-03-22 8:30~23:59 18711111112,18711111114,18711111115 白班
|
|