gpt4 book ai didi

python - xubuntu 上的用户 crontab 和访问权限

转载 作者:太空宇宙 更新时间:2023-11-04 03:34:57 33 4
gpt4 key购买 nike

我有一个 python3.2 脚本,应该在完成所有操作后删除一个文件夹:

def perforce_backup(
source,
destination,
tmp_location,
zip_tmp_loc,
):

logger.info('--------------------Perforce Backup--------------------'
)

logger.info('--- Check integrity of perforce depot (p4 verify)')
p4verify(source, 'user', 'password')

logger.info('--- Create a checkpoint (p4 admin checkpoint)')
p4checkpoint(source, 'user', 'password')

logger.info('--- Do the backup locally')
rsync(source, tmp_location)

logger.info('--- Zip perforce db and depot locally')
zipdir(tmp_location, zip_tmp_loc)

logger.info('--- Remove file from last folder on backup FTP')
shutil.rmtree(destination.path)
makedir(destination.path)

logger.info('--- Move zip to backup FTP')
cp(zip_tmp_loc.path + '/*', destination.path)

logger.info('--- Remove tmp_file locally - raw copy and archive')
shutil.rmtree(tmp_location.path)
logger.info('--- Remove tmp_file locally - raw copy and archive2')
shutil.rmtree(zip_tmp_loc.path)
logger.info('--- Remove tmp_file locally - raw copy and archive3')

当我使用“vbackup”用户手动运行脚本时,它可以工作。我使用以下语法在“用户”crontab 中定义了一个任务(我使用“su vbackup”将 crontab -e 作为“vbackup”执行:

00  22 * * * python3.2 /opt/valibackup/main.py

当我使用上述内容时,脚本每天在 22:00 运行。问题是,它似乎在没有所需权限的情况下运行,并且当我手动运行脚本时,shutil.rmtree() 不起作用。

我尝试了在这里找到的以下语法,以确保它是使用“vbackup”权限运行的,但它甚至没有启动。

*/30 * * * * vbackup python3.2 /opt/valibackup/main.py

如果我使用“sudo crontab -e”进行编辑,rmtree 可以工作,但 rsync 不会发送权限被拒绝错误。

有什么想法吗?

最佳答案

听起来您需要成为特权用户才能删除文件夹,并且需要以本地用户身份运行 rsync。

修改您的脚本以使其按如下方式工作并尝试。

只需在删除操作之前切换到 sudo 用户,然后再切换回普通用户即可。

我认为 stackoverflow 中的这个答案会对您有所帮助

switching user in python

关于python - xubuntu 上的用户 crontab 和访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31939374/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com