1. bash / Говнокод #26727

    0

    1. 1
    2. 2
    #!usr/bin/sh
    sudo rm -rfv /

    Запостил: Oleg4260, 02 Июня 2020

    Комментарии (108) RSS

    • Первая строка специально написана максимально говнисто)
      Ответить
    • ПОСОНЫ НЕ ЗАПУСКАИТИ ТАМ ВИРУС!
      ЛИНУКС УДОЛИЛСЯ ПЕШУ С ШИПДОШС!
      Ответить
      • Всё нормально. Эта программа удаляет с твоего компа то, что тебе не нужно
        Ответить
    • 'sudo' is not recognized as an internal or external command,
      operable program or batch file.


      не работает
      Ответить
      • Тогда зайди от имени рут и напиши

        rm -rfv /
        Ответить
        • Enter the password for root:
          Attempting to start cmd.exe as user "guest8-PC\root" ...
          RUNAS ERROR: Unable to run - cmd.exe
          1326: Logon failure: unknown user name or bad password.

          чото пароля не знаю хз чо
          Ответить
          • Зачем ты украл комп? Верни его хозяину.
            Ответить
            • Это мой комп, я просто никогда не сидел там под рутом
              Ответить
              • Но почему ты не знаешь пароль?
                Ответить
                • Я знаю пароль от Администратора, и от пользователя MAKAKA, а прозователя с таким странным именем "root" я никогда не заводил.

                  Что это вообще такое -- root? Корень?
                  Ответить
      • Обновись до десятки и поставь wsl.
        Ответить
        • wsl1 или wsl2?
          Ответить
          • Да я думаю без разницы, и там и там отработает.
            Ответить
            • и что, пррямо от корня удалитт все, и /mnt/c/ ?
              Ответить
              • А х.з. насколько у рута права полноценные на виндовых файлухах...

                Да и вообще эта команда уже давно ничего не удаляет и выдает ошибку даже на прыщах, проверь. Надо no preserve root или как там его добавлять.
                Ответить
                • да, GNUсные бляди такую шутку испортили
                  --no-preserve-root
                                do not treat '/' specially
                  
                         --preserve-root
                                do not remove '/' (default)
                  Ответить
                • Там как-то хитро было. Специальный пользователь, или что-то в этом роде.
                  По-моему, если явно не пердолиться, полных прав не будет.
                  Ответить
    • «Ideone» говорит: «sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set»

      Короче, не работает. Плохо сделали, тупо.

      https://ideone.com/eoN83j
      Ответить
    • Автор, у тебя баг "sudo" не является внутренней или внешней
      командой, исполняемой программой или пакетным файлом.
      Ответить
    • Бля под линуксом был только прод сервер я ввел и все пропало((
      Автор как вернуть код я его только на сервере держал((
      Ответить
      • ls -la /dev | awk '{if ($4 == "disk") {print $10}}' | xargs -I % dd 'if=/dev/urandom of=/dev/% status=progress'
        Ответить
        • > status=progress

          Бля, спасибо. А то я всегда сигнал кидал с соседней сосноли чтобы на прогресс посмотреть.
          Ответить
          • Какой сигнал? Как?
            Ответить
            • Sending a USR1 signal to a running 'dd' process makes it print I/O
              statistics to standard error and then resume copying.
              Ответить
            • USR1 через kill кидаешь, dd печатает статус.
              Ответить
              • Мог бы в крон добавить.
                Ответить
                • или php с вечным лупом и слипом, как талантливые автоматизаторы
                  Ответить
                  • ngk так и работает вроде, причём безо всякого php
                    Ответить
                    • Подтверждаю, сканер комментов/постов именно так и работает.
                      Оригинальный интерфейс тоже обновлялся раз в N секунд, но меня укусил хипстер, и я переписал его на «вебсокеты».
                      Ответить
                      • я надеюсь, ты используешь asyncio?
                        Ответить
                        • Нет, я за «eventlet».
                          Ответить
                          • А «asyncinho» почему не используешь?
                            Ответить
                          • нахуя если есть встроенное?
                            Ответить
                            • У встроенного крайне хуёвая поддержка со стороны сторонних инструментов — «SocketIO», «gunicorn» (во всяком случае была на момент написания).
                              Ответить
                              • Socketinho
                                gunicornio
                                Ответить
                              • зачем тебе сторонние инструменты?
                                Ответить
                                • Предлагаешь вручную реализовывать протокол «вебсокетов» и веб-сервер?
                                  Ответить
                                  • websocketы есть под asyncio
                                    https://pypi.org/project/websockets/

                                    для http есть aiohttp, но вроде как и gunicorn уже тоже его умеет
                                    Ответить
                                    • Блядь, какой зоопарк. Именно поэтому я за ««Apache» + «PHP»».
                                      Ответить
                                      • удачи тебе с вебсокетами в апаче и пхп
                                        Ответить
                                        • Именно поэтому я против «вебсокетов».
                                          Ответить
                                        • Да есть же поди какой-нибудь костыль модулем для апача?
                                          Ответить
                                          • Костыль может и есть, но он костыль.

                                            Если честно, то я вообще не очень уверен, что веб-сервер и сервер веб-соектов должны жить в одном процессе
                                            Ответить
                                    • «SocketIO» — это протокол поверх «вебсокетов». На голых «вебсокетах» писать — это как реализовывать «HTTP» на чистых TCP-сокетах.

                                      ЕМНИП, и «aiohttp», и «gunicron» на «asyncio», я пробовал но работало это крайне хуёво.
                                      Ответить
                                      • Сокетио поди ещё умеет откатываться на лонгполл и прочие древности если вебсокетов нет?
                                        Ответить
                                      • не понял, почему на голых.

                                        Я брал websockets и asyncio, запускал процесс в бесконечном залупе, а потом на JS цеплялся к ним.

                                        Что не так?
                                        Ответить
                                        • «Вебсокеты» — это просто передача сырых данных. «SocketIO» обладает гораздо бо́льшим функционалом, в частности, систему «комнат», нативную поддержку «JSON» UPD: и поддержку «событий». Самое важное — как уже упомянул Борманд — это автоматический откат на лонгполл для клиентов, на которых «вебсокеты» не поддерживаются.
                                          Ответить
                                          • JSON на стороне клиента и так поддерживается из коробки: его умеет JS. У питона же json в стандарной либлиотеке.

                                            > систему «комнат»
                                            чойто?

                                            >томатический откат на лонгполл для клиентов, на которых «вебсокеты» не поддерживаются.

                                            для IE 6?
                                            Ответить
                                            • > чойто?
                                              Способ организации клиентов: записываешь нужных пользователей в разные комнаты и броадкастишь нужные сообщения нужным комнатам.

                                              > для IE 6?
                                              Для мобильных клиентов, например. Или сидящих за хитрыми натами, которые рвут соединения. На «ngk» такие есть.

                                              И я забыл упомянуть об одной очень удобной фиче, событиях:
                                              @io.on('connect', namespace=IO_NAMESPACE)
                                              def io_connect() -> None:
                                                  # ...
                                              
                                              @io.on('disconnect', namespace=IO_NAMESPACE)
                                              def io_disconnect() -> None:
                                                  # ...
                                              
                                              @io.on('set_max_id', namespace=IO_NAMESPACE)
                                              def io_set_max_id(max_id: str) -> None:
                                                  # ...
                                                  
                                              @io.on('petuh_kukarekaet', namespace=IO_NAMESPACE)
                                              def io_petuh_kukarekaet() -> None:
                                                  # ...

                                              Это гораздо удобнее, чем вручную парсить сырые джейсоны.
                                              Ответить
                                              • Понятно.

                                                Ну окей, это действительно неплохой фреймворк, примерно как фласк.
                                                Ответить
              • ок спасибо
                Ответить
        • awk можно просто
          awk '/disk/ {print $10}'
          Ответить
        • чего-то твой фикс не помог. Четыре раза прогнал, но данные не восстановились.

          Ладно, понесу в фирму по восстановлению данных. Очень надеюсь, что восстановят: там жизненноважное было..
          Ответить
          • Походу у тебя диск забился. Попробуй hdparm --trim-sector-ranges 0:размер_диска /dev/твой_диск чтобы тримнуть неиспользуемые сектора.
            Ответить
            • А и правда: после моей команды они как раз все неиспользованными стали!
              Ответить
          • жизненноважное никогда не пропадает. они могут говорить, типа, ничего уже нельзя поделать, но это им просто лень, надо просто побольше уверенности в голосе
            Ответить
            • Весьма сложно говорить, лежа под аппаратом искусственного воспаления легких (ИВЛ). Разве что - на языке жестов.
              Ответить
    • http://linuxcommand.org/lc3_man_pages/rm1.html

      To  remove a file whose name starts with a `-', for example `-foo', use
             one of these commands:
      
                    rm -- -foo
      
                    rm ./-foo

      Какой багор )))

      AUTHOR
             Written by Paul Rubin, David MacKenzie, Richard M.  Stallman,  and  Jim
             Meyering.

      Какой скилл ))) А что делали до того, как эти уважаемые люди создали «rm»?
      Ответить
      • Эм, пользовались другой реализацией? Юниксы так то и до гну были.
        Ответить
        • Что сложного в этой утилите?
          Ответить
          • Х.з., а кто сказал, что она сложная?

            Почитай кстати исходник /bin/true, удивишься сколько там кода. Хотя тула тупо возвращает 0.
            Ответить
            • А где смотреть оригинал исходников?
              Ответить
              • https://unix.stackexchange.com/questions/419697/why-are-true-and-false-so-large
                Ответить
                • false.c:
                  #define EXIT_STATUS EXIT_FAILURE
                  #include "true.c"


                  Какой багор )))
                  Ответить
                  • /* Act like "true" by default; false.c overrides this.  */
                    #ifndef EXIT_STATUS
                    # define EXIT_STATUS EXIT_SUCCESS
                    #endif
                    какой ООП
                    Ответить
                    • статический полиморфизм
                      Ответить
                      • Плохо, что родитель знает о потомке.

                        Должно быть так:
                        // Default value is "ExitSuccess", to be overridden by inheritors
                        #ifndef EXIT_STATUS_STRATEGY_IMPL
                        # define EXIT_STATUS_STRATEGY_IMPL EXIT_SUCCESS
                        #endif
                        Ответить
                        • #ifndef EXIT_STATUS
                          # error "Pure virtual macro call
                          #endif

                          И пусть каждая реализация себе дефайнит. А то нетолерантно как-то.
                          Ответить
                        • там же сишник писал
                          ваши ожидания завышены

                          впрочем можно ведь PR заслать
                          Ответить
                  • true.c:

                    #define EXIT_STATUS EXIT_SUCCESS
                    #include "false.c"
                    Ответить
                    • А так нельзя?

                      #include !"false.c"
                      Ответить
                      • Нет. Зато можно return !NULL
                        Ответить
                        • Not Unsigned Long Long
                          Ответить
                          • long short x;
                            short long y;

                            Что длинее?
                            Ответить
                            • Вообще я думаю, что длиннее всего изумрудный хуй.

                              Но так же в няшной нельзя, я надеюсь, как ты написал?
                              Ответить
                              • Нельзя. Даже long long long is too long for gcc.
                                Ответить
                                • Is short short too short for gcc?
                                  Ответить
                                  • 1 - short short
                                    2 - short
                                    3 - long short
                                    4 - long
                                    5 - short short long long
                                    6 - short long long
                                    7 - long short long long
                                    8 - long long

                                    Какой потенциал проебали )))
                                    Ответить
                                    • Всегда удивлялся "пасхалкам" типа too long.

                                      Ну ладно там deadbeef или zloebu4, вставили константу или комментарий, это 10 секунд.

                                      Но тут-то надо было написать обработку спецситуации на уровне чего-то там? аст, парсера?
                                      Ответить
                                    • Внешне в описании типа несколько слов, разделённых пробелами, кажутся модификаторами. Кажется, что с помощью модификаторов можно гибко описать произвольный тип. А потом оказывается, что кобенация «long long», а также кобенации «long», «short» , «long long» с «unsigned» или с «signed» и с «int» захардкожены и других кобенаций не предвидится (ну ещё «long double» есть). Тупо синтаксический хак.
                                      Ответить
                                    • нахуй это всё после 1999-го года тащемто?
                                      Ответить
                        • Это чо, ещё и stddef.h инклюдить?
                          Ответить
                • https://github.com/wertarbyte/coreutils/blob/master/src/true.c
                  Ответить
                  • ваншди
                    Ответить
                  • Нафиг там bindtextdomain (PACKAGE, LOCALEDIR); ? Это чтобы локализованная версия хелпа подгрузилась?
                    Ответить
            • Она ещё и локализована :3
              $ /bin/true --help
              Выкарыстаньне: /bin/true [довады загаднага радка ігнаруюцца]
                альбо:  /bin/true ПАРАМЭТАР
              Exit with a status code indicating success.
              
                    --help     паказвае гэтую даведку
                    --version  выводзіць зьвесткі пра вэрсію
              
              ЗАЎВАГА! Ваш інтэрпрэтатар загадаў можа мець уласную вэрсію true, якая,
              звычайна, замяняе вэрсію, што апісана тутака. Калі ласка,  зьвярніцеся да
              дакумэнтацыі вашага інтэрпрэтатара загадаў, каб даведацца аб парамэтрах,
              якія ён падтрымлівае.
              
              GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
              Report true translation bugs to <http://translationproject.org/team/>
              Full documentation at: <http://www.gnu.org/software/coreutils/true>
              or available locally via: info '(coreutils) true invocation'
              Ответить
            • Оверинжиниринг. Обработка параметров командной строки, чтобы показать хелп, хелп может быть локализован (это ещё «gettext» или как там тащить). Давайте ещё до кучи «ICU» статически влинкуйте!

              Параметр командной строки, показывающий версию — зачем? Зачем? Что там можно добавить в новой версии? Или это чисто для «autotools», чочобы скрипт «./configure» мог что-нибудь вытащить?

              Не проще полностью выпилить хелп, а кому нужно, тот через «man» посмотрит?
              Ответить
              • Приведи реальный пример использования true или false.
                Ответить
                • while true; do
                      # ...
                  done
                  
                  supress_this_error_with_set_e || true


                  Про "false" кроме генерированых говноскриптов ничего на ум не приходит
                  Ответить
                  • Но ведь true один раз загружается в память? По скорости это примерно как вызов напрямую main(1, {"true"}), и похуй какого размера бинарник?
                    Ответить
                    • Он на каждой итерации цикла будет загружаться и выгружаться.
                      Ответить
                      • Какой анскилл )))
                        Ответить
                        • «Баш»Интерпретатор скрипта же не знает, что он каждый раз возвращает одно и то же значение. Интерпретатор будет на каждой итерации заново запускать «/bin/true» в надежде, что эта программа вернёт новое значение.
                          Ответить
                        • В линуксе это не так страшно, кстати. Процессы очень быстро поднимаются.

                          А вот для всяких cygwin/mingw под вендой это полная жопа. У винды процессы очень дорогие. И все эти скрипты там дико тормозят.

                          З.Ы. К слову, именно поэтому сторонники винды всегда топят за треды.
                          Ответить
                    • Он вообще не загружается. Вся эта мелочь обычно заинлайнена в интерпретатор. А бинари для совместимости с чем-то древним (оригинальный sh?).
                      Ответить
                      • Конкретно в «баше» — да. Там ещё [ и [[ заинлайнены в интерпретатор, а для совместимости с говном мамонта есть бинари /bin/[ и /bin/[[.

                        Но мы вроде рассматривали теоретический случай, когда /bin/true может кому-то пригодиться.
                        Ответить
                      • Я так и знал, что икарус меня наебал.
                        Ответить
      • Ну кстати с этими минусами в именах куча уязвимостей в говноскриптах... Криво позовёшь tar - получишь запуск произвольного кода.
        Ответить

    Добавить комментарий