Script na ovladanie jasu displeja

Sekcia: Konfigurácia 17.09.2014 | 21:30
Avatar sunnynko Ubuntu 14.04  Používateľ

Čaute, zas a znova si neviem dať radu, a tak som prišiel za vami. Ide o to, že po odpojení napájania sa mi neupravuje jas displeja, tak som si spravil script, avšak bez SUDO to nefunguje a to by som potreboval zmeniť. Ďalej by som potreboval pomôcť s nastavením automatického spustenia po štarte systému. V prílohe dávam script. Budem vďačný za každú radu

    • RE: Script na ovladanie jasu displeja 17.09.2014 | 21:40
      Avatar sunnynko Ubuntu 14.04  Používateľ
      #!/bin/bash
      
      while [ 1 ]
      do 
         stav=$(cat /sys/class/power_supply/ADP1/online)
      
         if [ $stav -eq 1 ]
           then sudo su -c 'echo 9 > /sys/class/backlight/acpi_video0/brightness';
           else sudo su -c 'echo 3 > /sys/class/backlight/acpi_video0/brightness'; 
         fi
      sleep 2s
      done
      
      
      • RE: Script na ovladanie jasu displeja 17.09.2014 | 22:01
        Avatar Andrej Lacho Debian, CentOS ...  Administrátor

        S tym automatickym spustanim ti pomozem. V Settings mas nieco ako startup program/scripts. Tam si ho len nalistujes a bude sa ti spustat po lognuti.

        Alebo lepsia alternativa je Cron.

        • RE: Script na ovladanie jasu displeja 17.09.2014 | 22:07
          Avatar sunnynko Ubuntu 14.04  Používateľ

          Cez Startup aplications som uz skusal ale bez uspechu...

          • RE: Script na ovladanie jasu displeja 17.09.2014 | 22:09
            Avatar Andrej Lacho Debian, CentOS ...  Administrátor

            Tak potom:

            chmod +x menoscriptu.sh

            a pridaj do Crontab.

            • RE: Script na ovladanie jasu displeja 17.09.2014 | 22:11
              Avatar Andrej Lacho Debian, CentOS ...  Administrátor

              Blbosti vravim. Crontab ho nebude spustat po starte. Pockaj, nepamatam si presne ako to bolo, pozrem sa.

    • RE: Script na ovladanie jasu displeja 17.09.2014 | 22:17
      Avatar Andrej Lacho Debian, CentOS ...  Administrátor

      Spusti MC, bez do zlozky so scriptom, napis:

      chmod +x menoscriptu.sh
      
      crontab -e
      
      @reboot /cesta/ku/scriptu

      Rebootni a cekuj ci to frci.

    • RE: Script na ovladanie jasu displeja 18.09.2014 | 11:28
      Avatar WlaSaTy   Návštevník

      Priamy zápis do ACPI Baclight vyžaduje sudo kôli prístupu do toho súboru. Jediné čo s tým môžeš urobiť, je nastaviť aby daný skript spustený cez sudo nevyžadoval heslo.

      Ak ale robíš v grafickom móde, tak ten skript cez sudo nepotrebuješ a vystačíš si s štandardnými nástrojmi ako xbacklight, xcalib, redshift, relight, Calise, brightd alebo s appletom v grafickom rozhraní. Otázkou je, či ich má význam doinštalovať do už nepodporovanej verzie Ubuntu 13.10. Skôr by som odporučil upgrade na 14.04, a v prípade slabšieho stroja na vetvu LXDE alebo XFCE.

      • RE: Script na ovladanie jasu displeja 18.09.2014 | 12:24
        Avatar sunnynko Ubuntu 14.04  Používateľ

        Mám tam už Ubuntu 14.10 (v popise som mal ešte 13.10)..

        xbacklight som akurat skusal a nefunguje :/

        • RE: Script na ovladanie jasu displeja 18.09.2014 | 13:22
          Avatar WlaSaTy   Návštevník

          Ubuntu 14.10 ešte oficiálne nevyšlo, takže je pochopiteľné že na ňom bude zopár nefunkčných vecí. man sudoers.

          • RE: Script na ovladanie jasu displeja 18.09.2014 | 18:41
            Avatar sunnynko Ubuntu 14.04  Používateľ

            sorry pomylil som sa, nie je to Ubuntu 14.10 ale 14.04...

            nemohol by som v sudoers nastavit to aby mi to nepytalo heslo pri zmene tohto suboru???

            /sys/class/backlight/acpi_video0/brightness

            • RE: Script na ovladanie jasu displeja 18.09.2014 | 19:14
              Avatar WlaSaTy   Návštevník

              Konfigurák sudoers rieši spúšťanie programov pod inými užívateľmi alebo pracovnými skupinami, a nie na zmenu prístupových práv k rozhraniu hardware. Keď som si zbežne pozeral ten manuál, tak konfigurácia ktorú potrebuješ bola okolo riadku 444.

              • RE: Script na ovladanie jasu displeja 18.09.2014 | 19:28
                Avatar sunnynko Ubuntu 14.04  Používateľ

                Vedel by si mi pomoct konkretnejsie? Teda presny zapis ako to tam mam zapisat?

    • RE: Script na ovladanie jasu displeja 18.09.2014 | 21:39
      Avatar sunnynko Ubuntu 14.04  Používateľ

      Ak v sudoers nastavim toto:

      sunny ALL=(ALL) NOPASSWD: ALL

      tak to funguje, ale to funguje pre vsetky programy, da sa to specifikovat iba na tento script???

      • RE: Script na ovladanie jasu displeja 19.09.2014 | 09:12
        Avatar WlaSaTy   Návštevník

        Týmto si si urobil systém zraniteľným pre všetky typy mallware ktoré omylom spustíš. V tichosti sa môžu nainštalovať do systému tak, že ich len tak ľahko nenájdeš.

        Čo máš v tej manuálovej stránke okolo toho riadku čo som spomínal?

        • RE: Script na ovladanie jasu displeja 19.09.2014 | 10:47
          Avatar sunnynko Ubuntu 14.04  Používateľ
          • RE: Script na ovladanie jasu displeja 19.09.2014 | 10:52
            Avatar WlaSaTy   Návštevník

            A skúšal si porozumieť nižšie vystrihnutému textu, napríklad pomocou jeho strojového prekladu cez google translator?

            dgb     boulder = (operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm
             
            Then user dgb is now allowed to run /bin/ls as operator, but /bin/kill and /usr/bin/lprm as root.
            
            PS: Máš tam useknutý význam druhého slova, boulder v tejto ukážke poukazuje na názov stroja v ktorom je možné spustiť daný príkaz pod právami iného užívateľa cez sudo.

            • RE: Script na ovladanie jasu displeja 19.09.2014 | 11:12
              Avatar sunnynko Ubuntu 14.04  Používateľ

              Okay, a teda este jedna otazka, mam tam nastavit prava na /bin/sudo alebo na /bin/su??? ci oboje?

              • RE: Script na ovladanie jasu displeja 19.09.2014 | 13:14
                Avatar WlaSaTy   Návštevník

                Na ten skript.

    • RE: Script na ovladanie jasu displeja 23.09.2014 | 12:54
      Avatar sunnynko Ubuntu 14.04  Používateľ

      Díky, už to nepýta heslo :)

      Mám však ešte jeden problém, ten script sa spustí a funguje jedine vtedy keď ho spustím cez terminál, ako náhle ho spustím cez ALT+F2 alebo cez cron (alebo startup applications) tak sa síce spustí ale neupravuje sa jas. Viete mi niekto poradiť aby to fungovalo???

      • RE: Script na ovladanie jasu displeja 23.09.2014 | 13:23
        Avatar WlaSaTy   Návštevník

        To bude tým, že ten skript musíš mať definovaný s plnou cestou, a tak ho máš podsúvať pre sudo.

        • RE: Script na ovladanie jasu displeja 23.09.2014 | 18:47
          Avatar sunnynko Ubuntu 14.04  Používateľ

          Pri spustani mam definovanu plnu cestu (/bin/brightness) cez terminal to spustam len prikazom "brightness" a funguje, ale ked je to cez startup aplications tak tam to nefunguje ani cez brightness ani cez /bin/brightness

          • RE: Script na ovladanie jasu displeja 24.09.2014 | 09:05
            Avatar WlaSaTy   Návštevník

            Cez terminál Ti to nemôže fungovať bez sudo kôli zápisu do /sys/class/backlight/acpi_video0/brightness. To je dôvod, prečo si menil konfigurák pre sudo. Máš v ňom korektne nastavený ten záznam pre daný program, a voláš ho podľa toho záznamu? Asi nie, keďže Ti to nefunguje.

            • RE: Script na ovladanie jasu displeja 24.09.2014 | 13:49
              Avatar sunnynko Ubuntu 14.04  Používateľ

              Potom som to kus prerobil a aktualne to vyzera takto:

              #!/bin/bash
              
              oldstav=0;
              
              while [ 1 ]
              do 
                 stav=$(cat /sys/class/power_supply/ADP1/online)
              
                 if [ $stav -eq 1 ] && [ $oldstav = 0 ]
                   then sudo su -c 'echo 9 > /sys/class/backlight/acpi_video0/brightness';
                 fi
                 if [ $stav -eq 0 ] && [ $oldstav = 1 ]
                   then sudo su -c 'echo 3 > /sys/class/backlight/acpi_video0/brightness'; 
                 fi
              
                 oldstav=$stav
              sleep 2s
              done
              
              
              cez terminal to funguje ale inak nie...

              • RE: Script na ovladanie jasu displeja 24.09.2014 | 16:11
                Avatar WlaSaTy   Návštevník

                Aby toto fungovalo, tak by si musel zmeniť konfiguráciu z sunny ALL=(ALL) NOPASSWD: ALL na sunny ALL=(ALL) NOPASSWD: su čím si nehal stále otvorené konto na inštaláciu mallware. Nechcel si mať v sudoers názov toho skruptu náhodou, a v ňom to echo bez sudo/su?

                • RE: Script na ovladanie jasu displeja 24.09.2014 | 20:11
                  Avatar sunnynko Ubuntu 14.04  Používateľ

                  noo v sudoers mam:

                  sunny	sunny-laptop = (root) /bin/brightness
                  

                  • RE: Script na ovladanie jasu displeja 24.09.2014 | 20:30
                    Avatar WlaSaTy   Návštevník

                    Ale to bude vždy chcieť cez sudo heslo, teda pokiaľ nebolo pred tým zadané v tom jednom termináli krátko pred tým. Daj do sudoers pred presný názov toho skriptu ten NOPASSWD: a zo skriptu vyhoď to sudo/su.

    • RE: Script na ovladanie jasu displeja 23.10.2014 | 01:21
      Avatar menom   Používateľ

      Pridám sem moju skúsenosť s nastavením jasu.

      Od istého času vždy po spustení systému mám jas na 100 % a neni to zrovna príjemné.

      V mojom prípade xbacklight nefungoval a aj po prihlásení s právami roota terminál odpovedal:

      # /usr/bin/xbacklight -50
      No outputs have backlight property

      Nakoniec som prišiel na to, že stačí upraviť /etc/rc.local takto:

      #!/bin/sh -e
      #
      # rc.local
      #
      # This script is executed at the end of each multiuser runlevel.
      # Make sure that the script will "exit 0" on success or any other
      # value on error.
      #
      # In order to enable or disable this script just change the execution
      # bits.
      #
      # By default this script does nothing.
      
      
      echo 5 > /sys/class/backlight/acpi_video0/brightness
      
      
      exit 0

      Funguje to dobre, po štarte OS mám jas na 50% čo udáva číslica 5 za príkazom echo.

      Ale to už asi viete.  :-)

    • RE: Script na ovladanie jasu displeja 23.10.2014 | 14:53
      Avatar Andrej Lacho Debian, CentOS ...  Administrátor