• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    INDIANCentralizovaná správa stanic a ostatních prvků v síti - automation/monitoring/alerting a dalsi devops nastroje
    DEFILA
    DEFILA --- ---
    FRANCIMOUR:
    ja se v macOSu vazne nevyznam :)
    FRANCIMOUR
    FRANCIMOUR --- ---
    DEFILA: Něco takového ...

    What Is SIP? macOS System Integrity Protection Explained
    https://www.makeuseof.com/tag/what-is-sip-macos/
    DEFILA
    DEFILA --- ---
    FRANCIMOUR:
    Selinux - bezpecnosti politika linuxu, bez ohledu na to jaky jsi uzivatel (at uz root nebo, ne) - pokud tve 'procesy' nemaji spravny "stitek", tak je s zadnym uzivatelem nepustis
    FRANCIMOUR
    FRANCIMOUR --- ---
    DEFILA: Co to?
    DEFILA
    DEFILA --- ---
    FRANCIMOUR: macos má něco ala SElinuch?:))
    FRANCIMOUR
    FRANCIMOUR --- ---
    Tak jsem šel stepbystep:

    crony fungují... echo "hello world" do txt v pohodě,
    tak jsem zkusil find vypsat do txt taky v pohodě,
    zkusil jsem mazání s -delete a ... smaže se kus a dál už nic,
    tak jsem si to nechal vypsat do logu a Find: Operation not permitted
    * * * * 2 /usr/bin/find /Users/*/Library/Application\ Support/MobileSync/Backup -type f -mtime +60 -delete >> /Users/karel/Desktop/test.log 2>&1


    Hádám, že sice jako root, ale narážím na MacOS SIP.
    FRANCIMOUR
    FRANCIMOUR --- ---
    DRON: Ano, díky to už jsem taky vyčetl... takže root tam není. Zkusím se posunout níž a zkusit basic commands , abych zjistil zda mu nevadí něco v tom find..
    DRON
    DRON --- ---
    FRANCIMOUR: jestli to editujes pomoc crontab -e pod userem root, tak ta specifikace uzivatelw (root) za definici dne je uz navic...
    ADM
    ADM --- ---
    FRANCIMOUR: to by mohlo byt escapovanim {}, zkus to uplne vyhodit a nahradit ten -exec prostym -delete (pokud to ten jablecny find umi), jinak to zkus nejak odescapovat
    FRANCIMOUR
    FRANCIMOUR --- ---
    ADM: no já jsem to teď zkusil dát s plnou cestou:
    57 14 * * 2 root /usr/bin/find /Users/*/Library/Application\ Support/MobileSync/Backup -type f -mtime +90 -exec rm -f {} \;

    musím tam mít nějakou blbou chybu, že se to ani nechytne
    ADM
    ADM --- ---
    FRANCIMOUR: zkusil bych: plnou cestu napr. /usr/bin/find, do crontabu promennou SHELL="/path/to/shell/idealne/bash", spustit find v shellu neco jako /bin/sh -c "find blabla",
    FRANCIMOUR
    FRANCIMOUR --- ---
    DEFILA: OK tak jsem se podvolil a enabloval roota. crontab -e

    30 14 * * 2 root find /Users/*/Library/Application\ Support/MobileSync/Backup -type f -mtime +90 -exec rm -f {} \;

    ale tam mrcha se v uvedený čas nepustí. system.log mlčí
    FRANCIMOUR
    FRANCIMOUR --- ---
    DEFILA: Od roota se snsžím držet co nejdál, protože MacOS už párkrát měl idsues s rootem. Přepravňocat se mi to pro admina taky nechce.

    Pravda je, že bych mohl mít playbook, který bych pouštěl ručně a ten by to promázl ale chtěl jsem tu udělat automatické. Zkusím se podívat na ten playbook, který by udělal ten cron.

    Ještě dodatečná otázka, na kterou mi pan G nedokázal odpovědět: existuje na MacOSu něco jako na Linuxu /etc/cron.d/cron.daily? (Nebo tak nějak, cestu už si moc nepamatuju)
    DEFILA
    DEFILA --- ---
    FRANCIMOUR:
    pointa je, ze ne tak docela, ten tvuj command

    find /Users/$UserName/Library/Application\ Support/MobileSync/Backup -type f -mtime +90 -exec rm -f {} \;

    nahradi ansible za find /Users/{{ item }}/Library/Application\ Support/MobileSync/Backup -type f -mtime +90 -exec rm -f {} \;

    kdy item, se zmeni na jmeno uzivatele, ktereh vytahe z /etc/passwd a tedy kazdy uzivatel dostane zaznam do cronu (pokud to chces takhle)
    hezci reseni mi prijde, vykaslat se na kazdeho uzivatele/server/cron, proste mit na "master" Ansiblu takovyhle(podobny) - playbook - ten poustet v nejakem casovem intervalu a nemusis mit nic na jednotlivych hostech v cronu, jelikoz si to osahas z master nodu

    a taky se muzes uplne vykaslat na definici uzivatelu, proste prohledas /Users/*/DALSI_CESTA - vsechny soubory, ktere se jmenuji Backup a proste je smazes ... (pokud mas nejakeho super-uzivatele, ktery ma pristup do vsech podadresaru)
    FRANCIMOUR
    FRANCIMOUR --- ---
    DEFILA: no ale pokud to chápu dobře tak bych to musel dělat pro každého uživatele ne?

    Já mám teď plist (txt v příloze).
    a script je:

    #!/bin/bash

    UserName=`whoami`
    find /Users/$UserName/Library/Application\ Support/MobileSync/Backup -type f -mtime +90 -exec rm {} \;

    Ale plist hází stejně chybu exited with abnormal code: 1

    Jde mi to, že se dělají v Itunes backupy, které potřebuji po 90 mazat... na každém kompu je cca 10 uživatelů a já hledám nejvíce smooth cestu.



    DEFILA
    DEFILA --- ---
    DEFILA:
    respektive chytam uzivatele 1000 - 1999 :D
    DEFILA
    DEFILA --- ---
    FRANCIMOUR:
    mno samozrejme nevim, jak to funguje na MACu, ale je to jednodussi nez tohle v Ansiblu?
    (kdy si tim grepem chytam akorat uzivatele, kteri maji ID >= 1000, predpokladam, ze to chces pro custom uzivatele a ne pro vsechny systemovy "demony"

    - hosts: localhost
      become: yes
      tasks:
        - name: chytnu_uzivatele
          shell: 'egrep ":[1][0-9]{3}" /etc/passwd | cut -d: -f1'
          register: moji_uzivatele
    
        - name: a_pustim_cron
          cron:
            name: "cron_update"
            minute: "0"
            hour: "1"
            job: "ls -lt"
            user: "{{ item }}"
          with_items:
            - "{{ moji_uzivatele.stdout_lines }}"
    ...
    
    FRANCIMOUR
    FRANCIMOUR --- ---
    INDIAN: zkouším teď variantu přes LaunchAgents..
    Nejsem si totiž jist jestli bych přes Ansible pochodil s vytvořením cronu pro každého usera
    INDIAN
    INDIAN --- ---
    FRANCIMOUR:
    cron – Manage cron.d and crontab entries — Ansible Documentation
    https://docs.ansible.com/ansible/latest/modules/cron_module.html
    FRANCIMOUR
    FRANCIMOUR --- ---
    Hoj,

    zase dotaz..

    potřebuju vytvořit cron pro každého uživatele na MacOSu .. existuje nějaká jednodušší varianta, než to dělat ručně? Idealně aby se to pouštělo z jednoho místa a bez root?
    Kliknutím sem můžete změnit nastavení reklam