LINUX.ORG.RU

Задачка для ломания мозгов.

 , ,


0

3

Ребят, хелп! В тестовом на системного инженера попалась вот такая задача. Гист https://gist.github.com/missdarki/13bc68988f52a55c817ccfcaa1146b6e/revisions Отношения с линукс баш на стадии «неловкого краснения при взгляде на него», поэтому как подступиться к этому набору символов я не знаю. А уж тем более куда-то вставить слово, чтобы оно еще и заработало. Если поможете идеями/решением, буду очень благодарна!



Последнее исправление: miss_didi (всего исправлений: 1)
Ответ на: комментарий от Gleb_dev

Да подскажите уже ей наконец!

Да вроде уже всё объяснили )
Ну как из «pwn3d!: command not found» сделать что-то, что сожрёт bash - конечно же с помощью волшебного слова echo!))
Ну и намек, куда его вставить, тоже был вполне прозрачный...

vinvlad ★★
()
Ответ на: комментарий от miss_didi

... кстати, если погуглить значение сленгового словечка «pwn3d», то это тоже как бы подсказывает, что с ним нужно сделать в bash-скрипте ))

vinvlad ★★
()
Ответ на: комментарий от Gleb_dev

Хотя работодателей с такими тестами и не зазорно подставлять, но все равно же на собеседовании попросят объяснить, и всё.

goingUp ★★★★★
()

Допустим, случится чудо и тебя примут. Как ты будешь работать? Так же через лор?

Если не пытаться разобраться с тем, что там происходит, то задачка простая. Подвох как раз в том, что очень хочется попытаться.

WitcherGeralt ★★
()

Походу мне бы не перезвонили... Вроде по отдельности все ясно, но что в конечном итоге должно получится хз. Ну эвалится строка, ну ок, баш не знает такого бинаря. Ппц сижу второй час втыкаю как довн.

N-N
()
Ответ на: комментарий от N-N

Ппц сижу второй час втыкаю как довн.

Ну если вам не жалко своего времени... Ответ же был полторы суток назад. Ну вот мой шуточный пост на ответ: Задачка для ломания мозгов. (комментарий)

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)
Ответ на: комментарий от N-N

Вроде по отдельности все ясно, но что в конечном итоге должно получится хз. Ну эвалится строка, ну ок, баш не знает такого бинаря.

Ну так там же не просто имя какого-то бинаря, до которого баш не может добраться. Башу для выполнения подсовывается pwn3d! - то, что по задумке авторов и не должно быть именем команды ))) Вам надо этот фрагмент скрипта преобразовать в «правильное» действие с «фразой» pwn3d! )

vinvlad ★★
()
Ответ на: комментарий от vinvlad

Объясните, пожалуйста, что делает эта задача? Я не приходила сюда тупо за ответом, хотя мне его уже тыщу раз дали и прозрачно намекнули что и куда вставить уже два дня назад: «не слышно эхо, при чем до того, как тебя поимели». Очевидно, что говорится про echo до pwn3d! Только «прозрачное» не прозрачно. Из какой части кода появляется «pwn3d!»?? Я разобрала все: eval, sed, echo, awk, прямые и обратные слэши. Читаю код в овер100500 раз и не понимаю, что она делает, что она должна в итоге вывести? что она где заменяет? просто не. понимаю. АААААААААААААААААА!

P.S. Всем тем, кто будет писать под этим комментом «ты просто тупая» - да! я с вами согласна.

miss_didi
() автор топика
Ответ на: комментарий от miss_didi

Объясните, пожалуйста, что делает эта задача? ... Из какой части кода появляется «pwn3d!»?

Вот из этой:

eval $(...);

Башевская конструкция $(...) означает, что здесь нужно в качестве строчного значения подставить вывод всех команд, выполненных внутри скобочек. Фактически, все это барахло внутри скобочек формирует вот такую строчку:

$(__ 112)$(__ 119)$(__ 110)$(__ 51)$(__ 100)$(__ 33)

Это легко проверить, если eval заменить на echo.
Ну а eval эту строку еще раз интерпретирует в смысле башевских подстановок и пытается выполнить результат как команду. Заключительная интерпретация приводит к цепочке вызовов функции __() { ... }. Каждый такой вызов с соответствующим числовым параметром дает на выходе отдельную буквочку, ASCII-шный код которой задается этим числом.

Соответственно, нам остается только вставить echo:

eval echo $(...);

и мы получаем «правильную» башевскую команду )

vinvlad ★★
()
Ответ на: комментарий от vinvlad

Счас тихо рыдаю в сторонке... Спасибо вам огромное. Для меня был важен не ответ, как понимание того, что здесь происходит и что во что преобразуется, потому что в голове мешанина полная. Просто ОГРОМНОЕ всем спасибо!

miss_didi
() автор топика
Ответ на: комментарий от miss_didi

Ну теперь можно считать, что базовые знания полезных для системного инженера консольных команд получены )))

vinvlad ★★
()
Ответ на: комментарий от miss_didi

Счас тихо рыдаю в сторонке...

Вы сильно-то не расстраивайтесь... На самом деле, решение подобных задачек не имеет никакого отношения к реальной работе системного инженера. Всё знать не обязательно - можно всю жизнь проработать сисадмином и ни разу не воспользоваться какой-нибудь хитрой башевской командой типа eval.

Иметь представление об утилитах (типа grep, sed, awk, find, xargs) конечно нужно — но только на уровне, чтобы быстро сообразить, какую из них можно применить для решения конкретной задачи (для того и существуют man-странички). Ну и еще на тот случай, когда придется разбираться с чужими скриптами — но там никто не извращается, как в этой тестовой задачке... Чисто для себя, можно просто хорошенько выучить один наиболее удобный и подходящий скриптовый язык.

Такая задачка — это скорее для развлечения и выпендрёжа, нежели для серьёзного отбора нужных кадров. Её использование в качестве тестового задания больше свидетельствует о личностных проблемах «экзаменаторов» - ребята явно переработали и придают слишком большое значение своим конкретным, узкоспециализированным скилам и познаниям. Так и до мании величия недалеко... )

vinvlad ★★
()

Эта задачка уже 2 недели ходит по интернету в виде картинки

das_tier ★★★★★
()
Ответ на: комментарий от vinvlad

Всем привет!

Задачка моя :)

На самом деле это не задачка на собеседование, это задачка на отбор на курсы системных инженеров aka интернатура.

На собеседованиях мы немного другое спрашиваем, а для оценки целеустремленности курсанта - самое то. Кто умеет гуглить и готов думать - решит.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.