阻止bacula脚本中的安全查询

时间:2012-10-23 09:02:48

标签: bash bacula

我正在尝试编写bacula来删除不再使用的旧文件。虽然有超过1000个旧文件我不愿意这样做。

我走了多远

for filename in $(echo "list volume" |bconsole |grep Purged |awk -F\| '{print $3}')
do 
    echo "delete volume=2012-10-19_23h40m" | bconsole
done

但现在我遇到安全问题的问题,有人必须输入“是”/“否”。

  

您确定要删除卷“2012-10-19_23h40m”吗? (是/否)

但是bconsole程序刚刚退出!

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

可能会在混合中加一点expect(1)

bash$ cat delete_volume
#!/usr/bin/expect

# Start up bconsole
spawn bconsole

# Grab the command from STDIN
expect_user -re "(.*)\n"

# Send it to bconsole
send "$expect_out(1,string)\n"

# Handle the Q&A
expect "Are you sure" { send "yes\n" }

# Let bconsole do its work
interact

所以你的循环看起来像这样(我假设2012-10 ...部分最终会被你在管道中发现的东西取代,但不知道它会如何起作用,我只是用你的东西我有问题了... ...

for filename in (...your file finding pipeline...)
do
    echo "delete volume=2012-10-19_23h40m" | ./delete_volume
done

通常的警告适用。我绝不是期望专家,因此强烈建议您在上线前进行测试。 : - )

答案 1 :(得分:1)

@brain感谢输入,但我喜欢一个班轮:D

什么是近乎单线并且像魅力一样

for filename in $(echo "list volume" |bconsole |grep 2012-08 |awk -F\| '{print $3}'); do bconsole << EOF; rm /media/storage/$filename; done
delete volume=$filename
yes
quit
EOF

所以你可以使用交互式程序来浏览所有内容:D