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