• ú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
    Diskuse o vsem, co se tyka nastroju ulehcujicich praci nejen administratorum ...

    Sirsi zaber vitan (resp. co se neveslo do nazvu) :
    Inventarizace * IT Asset Management * Centralizovana sprava instalaci / aktualizaci * Zalohovani stanic * Sprava licenci

    Par tipu :
    Saltstack * Ansible * OCS Inventory NG * Fusion Inventory * GLPI * Mandriva Pulse2 * IBM Tivoli * Microsoft SCCM * BackupPC * Bacula * Puppet * Chef * RackTables * Zabbix * Foreman * Cfengine * Wix Toolset * WKPG * Symantec Client Management Suite
    chybi tu neco ? sem s tim ;)
    rozbalit záhlaví
    DEFILA
    DEFILA --- ---
    QUIP: jop, není to perfektní ve všech případech, ale jako ukázka pro Ansible mi to přišlo OK:)
    QUIP
    QUIP --- ---
    DEFILA: Ciste teoreticky ten tvuj task (shell: 'egrep ":[1][0-9]{3}" /etc/passwd | cut -d: -f1') muze odchytit i uzivatele, ktery ma UID mimo ten pozadovany rozsah, ale ma takove treba GID, nebo komentar zacina cislem 1xxx

    Takze bych tam spis dal awk, ktere bude rozlisovat konkretni fieldy

    awk -F: '$3 ~ /1[0-9]{3}/ { print $1 }' /etc/passwd

    nektere verze awk nerozumi tomu regexpu 1[0-9]{3}
    Tam je pak moznost pouzit

    awk -F: '$3 ~ /1[0-9][0-9][0-9]/ { print $1 }' /etc/passwd

    nebo

    awk -F: '$3 > 1000 && $3 < 2000 { print $1 }' /etc/passwd
    RUDOLF
    RUDOLF --- ---
    FRANCIMOUR: Wiki to má popsané lépe, imho něco jako selinux, jako nástroj tam má být csutil či tak nějak.. prej to jde částečně vypnout..

    System Integrity Protection - Wikipedia
    https://en.m.wikipedia.org/wiki/System_Integrity_Protection
    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
    Kliknutím sem můžete změnit nastavení reklam