我有一个bash脚本,它会ssh -tq
进入远程框,并会执行几个命令。
像这样:
if [[ $answer = 1 ]] ; then
ssh -tq box "
cd /biglogs/
sudo ls -g ./$host1/2017/$month1 | tail -5
sudo tail /$folder1/$host1/`date +%Y`/$month1/`date +%d`/$host2"
fi
在ssh进入删除框之前定义所有变量。我的问题是,我不确定如何删除最新的文本文件。正如您所看到的,sudo尾部将进入/folder1/$host1/`date +%Y`/$month1/`date +%d`/$host2"
。
$host1
和文件夹以及$month
由ssh之前的用户输入定义。我想要的是这个脚本在文件夹$month
内拖尾最新的文本文档。
dir格式如下test1.test.t/2017/08/31/test1.test.1.txt
目前我的脚本将尝试使用当天的日期拖尾文本文档,所以如果我输入02月(查询将是test1.test.t/2017/02/
),脚本将添加31(今天),因此它将是test1.test.t/2017/02/31/
我们都知道它不正确。
对于将其标记为欺骗并使用-d的人,我不认为这是正确的。 文件夹结构是 /folder1/host/year/month/day/host.log 目前该脚本将采用实际日期,例如今天2017/08/31 但是如果该盒子自2017/08/20以来一直处于脱机状态,那么2017/08/31文件夹中将没有日志文件。尽管如此,我的脚本将尝试当前日期。我的问题是如何强制脚本使用月份文件夹中的最后一个日期
答案 0 :(得分:0)
您可以在ssh之前查看日期:
year=$(date +%Y)
month1="02"
day=$(date +%d) # current day is 31
date -d "$(date +%Y-${month1}-${day})" 2>/dev/null
# date: invalid date ‘2017-02-31’
# if date fails
if [[ $? -ne 0 ]]; then
day=$(date -d "$(date +%Y-$((month1 + 1))-01) -1 day" +%d)
fi
echo ${year}-${month1}-${day}
# prints: 2017-02-28
所以在你的脚本中使用:
sudo tail /${folder1}/${host1}/${year}/${month1}/${day}/${host2}