python 不执行命令_python – 如何在不要求输入密码的情况下在脚本中执行命令?...

我想每天自动开启系统.所以我在Python脚本中使用下面的代码,但sudo每次都要求我输入密码:

os.system('sudo sh -c "echo date \'+%s\' -d \'+ \

24 hours\' > /sys/class/rtc/rtc0/wakealarm"')

如何在没有sudo每次询问密码的情况下运行此脚本?

解决方法:

Please note: Any method which involves putting your login password in plain text, in a command or in a file, is insecure and should NOT be used!

正确的方法来设置sudo,只需要你需要的一个特定命令,即echo date …> rtc …,允许在不需要密码的情况下运行.

步骤1.仅使用该命令创建shell脚本

>打开gedit(或您最喜欢的编辑器),并创建脚本,例如pydatertc.sh

>仅插入此行,并将其保存到,例如你的主目录:

echo date \'+%s\' -d \'+ 24 hours\' > /sys/class/rtc/rtc0/wakealarm

>退出编辑器,从终端,使脚本可执行并将其所有权更改为root,否则另一个有权访问您系统的用户可以编辑它并以root身份执行他们想要的任何命令而无需您的密码:

sudo chown root:root /home/username/pydatertc.sh

sudo chmod 700 /home/username/pydatertc.sh

步骤2.设置sudo以允许pydatertc.sh执行而无需密码

>在终端输入sudo visudo以打开sudo权限(sudoers)文件

>在第25行附近,你会看到这一行:%sudo ALL =(ALL:ALL)ALL

>在该行下方,插入以下行,其中username是您的用户名:

username ALL=(ALL) NOPASSWD: /home/username/pydatertc.sh

>退出编辑器(如果是nano,则按Ctrl X)

步骤3.修改python脚本以调用pydatertc.sh

>将行更改为:

os.system('sudo /home/username/pydatertc.sh')

现在您的脚本应该在不需要密码的情况下运行而不会影响您的帐户,数据或系统的安全性!

仅适用于wakealarm(不适用于一般用途!):

仅在这种特定情况下,由于/ sys / class / rtc / rtc0 / wakealarm文件仅控制系统的唤醒警报,否则无害,另一种避免密码的方法是使用chown获取该文件的所有权(如果您是设置闹钟的唯一用户),或使用chmod 666将其设为世界可写;在这种情况下,只需从Python调用中删除sudo,保持sh -c“….”完好无损.

标签:python,sudo

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值