Cron 작업으로 설정하지 않고 사용자의 SSH 세션에 무작위로 인쇄하도록 스크립트를 설정하려면 어떻게 해야 합니까?

Cron 작업으로 설정하지 않고 사용자의 SSH 세션에 무작위로 인쇄하도록 스크립트를 설정하려면 어떻게 해야 합니까?

저는 직장에서 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

하루 종일 친구들을 속일 수 있는 단일 제어 작업부터 시작하겠습니다. 작업이 시작된 후 30분 후에 스크립트를 시작하는 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))

관련 정보