我正在尝试创建一个可以从DJango / Python项目中删除 * .pyc 文件的脚本。
这些文件看起来如下:
./backend/libmstr/vendors/migrations/__pycache__/__init__.cpython-36.pyc
./backend/libmstr/vendors/__pycache__/__init__.cpython-36.pyc
./backend/libmstr/vendors/__pycache__/models.cpython-36.pyc
./backend/libmstr/vendors/__pycache__/admin.cpython-36.pyc
权限如下:
ls -lart ./backend/libmstr/vendors/migrations/__pycache__/__init__.cpython-36.pyc
-rw-r--r-- 1 root root 143 Dec 21 15:55 ./backend/libmstr/vendors/migrations/__pycache__/__init__.cpython-36.pyc
可以看出,此类文件的组和用户是root 。
鉴于我没有以root身份运行任何东西,我不确定它们来自哪里。
所以,我选择使用函数删除它们。为了让函数运行没有问题,它必须在“sudo”下运行
我创建了文件: /home/dockerdj/remove_pyc_files.sh
#!/bin/bash
sudo find . -name "*.pyc" -exec rm -f {} \; -print
文件(上方)是在用户帐户上创建的: dockerdj 我还为用户提供了 sudo权限。我还在.bashrc
文件
export PATH=$PATH:/home/dockcclubdjango
我还在/etc/sudoers
中添加了以下内容:
https://www.digitalocean.com/community/tutorials/how-to-edit-the-sudoers-file-on-ubuntu-and-centos
dockerdj ALL=(ALL) NOPASSWD: /home/dockerdj/remove_pyc_files.sh
即使在执行上述操作后,在运行remove_pyc_files.sh
时,我仍然需要输入密码。
我做错了什么?
答案 0 :(得分:0)
是的,系统要求您输入用户密码以确认这是用户,您可以这样做:
#!/bin/bash
PASSWORD='password or something';
echo -n -e '${PASSWORD}' | sudo -S find . -name "*.pyc" -exec rm -f {} \; -print
这样,脚本不会要求您输入密码,您可以做的另一件事是使用十六进制密码并使用'\\ x'
进行连接