LINUX.ORG.RU

tinycmd — ввод нескольких символов вместо длинной команды в консоли

 


0

1

Бывало ли когда-нибудь так, что нужно было помочь кому-то из друзей или родственников, плохо разбирающихся в компьютерах, что-либо установить или настроить? Во многих случаях бывает довольно сложно объяснить, что нужно делать в графическом интерфейсе, поскольку нужно представлять себе, что происходит на экране у другого человека, а интерфейс у него на компьютере может выглядеть очень по-разному.

Гораздо проще в таких случаях просто попросить человека открыть терминал и набрать определённую строчку команд. Но как именно это сделать, если человек плохо знаком со столь привычными нам компьютерными понятиями? Если диктовать по телефону, то ему может быть сложно искать спец. символы на клавиатуре, и он может расставлять пробелы не в том месте, а если использовать текст, то может потребоваться сначала объяснить ему, что такое буфер обмена, и как выделять и копировать текст, а потом разбираться, почему команда не работает (а потом выяснить, что человек, например, скопировал команду целиком, за исключением последнего символа).

Только что я закончил работу над сервисом tinycmd. Этот сервис позволяет сокращать целую строчку команд до всего лишь нескольких символов, которые нужно набрать в терминале, и нажать Enter.

Такая команда может выглядеть например так:

t zx48v7

Здесь t — это команда tinycmd.

Помимо варианта с удалённой помощью сервис можно использовать для презентаций или мастер-классов, либо когда нужно написать для кого-либо инструкцию на бумаге.

Для того, чтобы добавить новую команду, которая становится доступна с любого компьютера, где установлен tinycmd, достаточно зайти на tinycmd.org.

И ещё доступен исходный код на Гитхабе. Поэтому tinycmd можно установить и использовать даже там, где по каким-то причинам невозможен доступ в Интернет, но есть, например, локальная сеть.

>>> Сайт tinycmd

теперь не надо шифровать rm -rf /* используя perl. Спасибо тебе, добрый автор!

catap ★★★★★
()

Открылся минималистичный филиал bash.org для ЛОРа...

ifred
()

wget http://tinycmd.org/t && chmod 755 t && sudo mv t /usr/local/bin/

И в бинарнике появляется изменяемый пользователем скрипт, так? Вуаля!

lodin ★★★★
()

то есть объяснить как скопировать текст в консоль это сложно, а как установить прогу легко? сервис мог бы быть возможно кому-то нужен, если бы работал без установки дополнительных приложений, а так это только потренироваться в програмировании автору сего чуда :)

bezgubov
()

Хорошо бы сделать «дырявые» номера, чтобы при опечатке в одной букве не исполнилось ничего, а не исполнилось неизвестно что. Надо делать

(1) чексумму как у кредиток

(2) при наборе sms велика вероятность ошибки «та же кнопка больше/меньше раз» => если где-то стоит «s», то r или 7 там быть уже точно не может.

Про «показывать, но не делать» и «выводить кто ввел команду» тут уже писали.

Можно ещё добавить локальную чексумму, типа «компьютер говорит rz78q5, мне соглашаться?»

lodin ★★★★
()

ИМХО бред лохматого студента (с гитарой).

Прежде чем тупо выполнять некую команду на системе, необходимо посмотреть что же в этой системе творится, определить проблему, найти ее решение, сделать резервную копию модифицируемых данных, а уж затем пытаться данную проблему решить. Сам процесс называется удаленным администрированием. Автоматизации не подлежит, а посему исполняется системным администратором. Стандартное решение под никсами - удаленный доступ через ssh с рутовыми правами.

ИМХО Сайт и програму фтоппку. Аффтара в ПТУ учиццо на кампутере, ибо способный малый. Ежели хочется помочь людям - станьте их персональным системным администратором.

anonymous
()

пользователь может ошибиться при наборе набора (извиняюсь) символов и в результате выполнить на своем компьютере абсолютно другую (чужую) комманду. Такая ситуация была предусмотрена при разработке?

void
()

Это гениально!

ostin ★★★★★
()

Закапывайте, это не секьюрно.

qbbr ★★★★★
()

абсолютно бредовая идея. я даже представить не могу, как такое могло прийти кому-то в голово.

Deleted
()

> И ещё доступен исходный код на Гитхабе.

замените пажаласта строчку:

PROJECT_ROOT = os.path.abspath(os.path.dirname(__name__))

на строчку:

import sys, os.path
PROJECT_ROOT = os.path.abspath(os.path.dirname(__name__.decode(sys.getfilesystemencoding()))

потомучто внутри __file__ могут [случайно] попасться NON-ASCII-символы... и если они к томуже [случайно] смешаются с Unicode-символами — то неминуемо будет Exception. вы уж поверьте!

* первое [случайное] условие очень даже возможно, потомучто малоли откуда я буду запускать проект (пожет из папки «/opt/Мои Программы/»?)

* второе [случайное] условие очень возможно — потомучто гляньте исходный код джанги! Джанга так и изобилирует Unicode`дыми строчками! (что конешноже хорошо!)

(в случае если будет ТОЛЬКО первое или ТОЛЬКО второе из [случайных] условий — то Exception — НЕ возникнет.. именно поэтому возможно у авторов программы он и не появлялся)

user_id_68054 ★★★★★
()

И да. Домен «рм.рф» уже зарегистрирован. Но, может, стоит попробовать его выкупить?

lodin ★★★★
()

анонимусы рекомендуют history или ctrl+r

anonymous
()
Ответ на: комментарий от lodin

> чтобы при опечатке в одной букве не исполнилось ничего, а не исполнилось неизвестно что.

Так это заданную дистанцию Левенштейна надо будет соблюдать относительно всей существующей базы данных. Мне кажется, это огромный объем вычислений будет потом, и добавление команды будет занимать минуты.

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

> относительно всей существующей базы данных

тыг можно зарегестрировать новый домен, и придумать другое название программы (типа t2)

..а на эту «неправильную» версию забить болт :-)

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

> И как это решит проблему опечаток и «соблюдения дистанции»?

непредётся подбирать дисстанцию «относительно всей существующей базы данных», йопт!

а достаточно будет в начало и конец каждой генерируемой последовательности прибавить по одному символу, всчитанному исходя из результатов sha256-функции

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

У меня есть существенные сомнения, что при таких дописках можно гарантировать, что любой вариант отстоит от всех других минимум на 1 или 2 опечатки.

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

ну во первых придётся сделать опечатку в самой ``оригинальной`` последовательности, а во вторых — опечатку в ``контрольных`` символах (котоыре вначале и вконце ``оригинальной`` последовательности)

но может быть и да..

может быть надёжнее будет — просто брать первые 6-или-10 символов из sha256 (выщщитанной относительно укорачиваемой формулы)

может быть в таком случае вероятность коллизии (при единичной или двойной ошибке) — будет ещё меньше!

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

fix(«укорачиваемой формулы», «укорачиваемой команды»)

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

Может тогда просто сделать один символ, скажем, последний, контрольной суммой предыдущих? Это тоже даёт некоторую защиту от опечаток и требует меньше вычислений. И тоже не гарантирует ничего при этом.

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

В t_old. И потом кричать: «I t_old you not to run that shit!!!»

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

> может тогда просто сделать один символ, скажем, последний, контрольной суммой предыдущих?

ну можно и один :-)

(тут неважно какое количество контрольных символов)

суть сёравно сведётся к тому что есть смысл похерить уже существующую базу данных, и начать новую базу данных, работающщую по более правильной формуле генерации укоротителей :-)

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

А, тьфу, точно. Есть же не буквенно-цифровые символы, посыпаю голову пеплом. И предлагаю другой вариант: сокращалка делается по схеме \d+[A-Za-z]+, где цифры в начале - контрольная сумма исходного выражения.

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

Э... Так мы сами и генерим базу, что мешает использовать заведомо «хорошие» номера, а не генерить неизвестно что и проверять.

Опять же, можно медленно, но верно генерить номера оффлайново и добавлять в базу, а потом тягать из базы уже сгенеренные.

lodin ★★★★
()

так и представляю себе /etc/rc.local ... и внутри него:

t blahbla &&
t xxblahblablah &&
t yyyblahblab

:-D

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

«Уважаемый пользователь! Мы благодарим вас за интерес к нашему сервису. К сожалению, на этот момент свободных идентификаторов для команд нет в наличии. Пожалуйста, зайдите позже и повторите попытку.»

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

«„“
новости!

уважаемые пользователи сервиса!

нам следует уведомить вас о том что сервису требуются средства на закупку новых класстеров для генерации идентификаторов!

вы можете присылать средства на щёт ... ... ...
»«»

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

>«Уважаемый пользователь! Мы благодарим вас за интерес к нашему сервису. К сожалению, на этот момент свободных идентификаторов для команд нет в наличии. Пожалуйста, зайдите позже и повторите попытку.»

Да надо просто рм-рфы все пихать на один номер (как тут и предлагали), а выдумывать оригинальные и полезные команды это трудно. Генерилка быстрее будет работать.

хотя-а... rm -rf / `echo $i | md5sum -` где i от 1 до +inf

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

<q>чтобы установить gentoo нужно выполнить 5 простых команд ... </q> ^)

dotbg ★★★★
()

Интересный проект. Но гораздо интереснее была бы реализация командной строки в стиле бэйсика с ZX-Spectrum

Quasar ★★★★★
()

Кстати о пастбине. Не касаясь полезности самой идеи, зачем еще один сервис с куцым функционалом? Не лучше ли было делать то же самое через апи пастбина?

Stinky
()
Ответ на: комментарий от MaGIc2laNTern

>> Совместил бы кто ssh с xmpp...

Так есть же ж!


эм... там есть собранные пакеты под какую-нить бубунту, чтоб поставить пользователю, вбить в логин+пароль джабера и оно заработало?

F457 ★★★★
()

Сегодня вроде еще не 1 апреля

anonymous
()

Автор, а зачем ты сделал сайт на языке, которым не владеешь ?

bolmer
()

ВААААУУУ!

Класс! Это же просто то, что мне надо. Для Ubuntu PPA будет?

linuxmaster ★★★★
()

Лень читать все камменты: тут уже сказали что вместо с командой надо задавать пароль?
В смысле чтоб пользователь не мог по ошибке выполнить хз что, чтоб пароль не совпал.

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