如何设置脚本随机打印到用户的 SSH 会话而不将其设置为 Cron 作业?

如何设置脚本随机打印到用户的 SSH 会话而不将其设置为 Cron 作业?

我在工作中管理一台小型服务器,用于 Samba 和 SSH。我想通过在一天中的随机时间运行一个脚本来获取随机报价(受此启发)并将其打印到终端会话。我想让每个事件对于单个用户来说都是唯一的(即,不会同时为每个人打印一个引用)。

我知道如何通过 Cron 设置它常规的间隔但我必须为每个用户执行此操作,因为运行它会root使其打印仅有的root。我想我可以将rootCron 设置为以随机用户身份运行脚本,例如* * * * * 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))

相关内容