我在工作中管理一台小型服务器,用于 Samba 和 SSH。我想通过在一天中的随机时间运行一个脚本来获取随机报价(受此启发)并将其打印到终端会话。我想让每个事件对于单个用户来说都是唯一的(即,不会同时为每个人打印一个引用)。
我知道如何通过 Cron 设置它常规的间隔但我必须为每个用户执行此操作,因为运行它会root
使其打印仅有的到root
。我想我可以将root
Cron 设置为以随机用户身份运行脚本,例如* * * * * sudo -u $someuser $random_quote
另一个脚本随机选择一个用户来进行操作,但我想限制每个人每天发生的频率。
有没有更简单的方法来实现这一目标?
对于有兴趣的人,脚本如下:
#!/usr/bin/env python
# coding: utf-8
from random import randint
from requests import Session
if __name__ == '__main__':
limit = 100
url = 'https://www.reddit.com/r/showerthoughts/top.json?sort=top&t=all&limit=' + str(limit)
x = randint(0,limit - 1)
#NEVER lie about your user-agent. - https://github.com/reddit/reddit/wiki/API
r = Session().get(url, headers = {"user-agent":"Python/RandomQuote4DebuggingFun (by /u/YOUR_REDDIT_USERNAME)"})
print r.json()['data']['children'][x]['data']['title'].encode()
只需在以下位置插入您的 Reddit 用户名即可/u/YOUR_USERNAME_HERE
答案1
我会开始一个单一的控制工作,这将愚弄你的朋友一整天。添加一个 cronjob,在工作开始半小时后启动该脚本,然后就完成了:)
#!/usr/bin/env python
# coding: utf-8
import grp
import random
from time import sleep
#unix group of those users you want to mess around with
FOOL_GROUP = 'sshusers'
MAX_JOKES_PER_USER = 3
def iterUser():
allUsers = grp.getgrnam(FOOL_GROUP).gr_mem
allUsers *= MAX_JOKES_PER_USER
random.shuffle(allUsers)
for user in allUsers:
yield user
if __name__ == '__main__':
for user in iterUser():
#make your joke here
#then sleep for up to 20min
sleep(random.randint(60,1200))