Como configuro um script para imprimir aleatoriamente na sessão SSH de um usuário sem configurá-lo como um trabalho Cron?

2

Estou gerenciando um pequeno servidor no trabalho que usamos para o Samba e o SSH. Eu gostaria de mexer com meus colegas de trabalho fazendo um script ser executado em horários aleatórios do dia em que ele pega uma citação aleatória ( inspirada por este ) e imprime para a sessão de terminal. Eu gostaria de fazer com que cada evento seja exclusivo para um único usuário (ou seja, uma citação não é impressa para todos simultaneamente).

Eu sei como isso pode ser definido via Cron em um intervalo regular , mas eu teria que fazer isso para cada usuário, já que o root faria com que ele imprimisse somente para root . Suponho que eu poderia definir o root Cron para executar o script como um usuário aleatório, por exemplo, * * * * * sudo -u $someuser $random_quote em que outro script escolhe aleatoriamente um usuário para mexer, mas quero limitar a frequência com que cada dia ocorre por pessoa.

Existe uma maneira mais simples de conseguir isso?

Para quem estiver interessado, o script é o seguinte:

#!/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()

Basta inserir seu nome de usuário do Reddit no /u/YOUR_USERNAME_HERE

    
por Kamikaze Rusher 18.11.2015 / 00:08

1 resposta

2

Eu começaria um trabalho de controle único que enganaria seus amigos ao longo do dia. Adicione um cronjob iniciando esse script meia hora após o início do trabalho e pronto:)

#!/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))
    
por 18.11.2015 / 01:02

Tags