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))

関連情報