Bash получить MD5 онлайн-файла

Это действительно работает для меня, и я надеюсь, что работает для кого-то другого, где ответ не работает. Я запустил программный центр с терминала с правами администратора:

sudo software-center

Затем нажмите «Повернуть рекомендации», и вместо того, чтобы отменить процесс без каких-либо предупреждений, появляется страница входа в систему Ubuntu One, и я был способный к входу в систему.

Теперь, на мой вопрос, есть ли причина, по которой у Software Center не было административных прав для выполнения команды? Я помню, что я сменил пароль, когда было отправлено предупреждение Heartbleed; Возможно, это произошло, но не было возможности изменить учетные данные в Центре программного обеспечения. Я просто предполагаю здесь.

[UPDATE] - Это работает только один раз ... когда я пытаюсь сделать то же самое, это то, что я получаю:

    Traceback (most recent call last):
  File "/usr/bin/software-center", line 130, in <module>
    app = SoftwareCenterAppGtk3(options, args)
  File "/usr/share/software-center/softwarecenter/ui/gtk3/app.py", line 338, in __init__
    self.icons)
  File "/usr/share/software-center/softwarecenter/ui/gtk3/session/appmanager.py", line 66, in __init__
    self.oauth_token = helper.find_oauth_token_sync()
  File "/usr/share/software-center/softwarecenter/backend/ubuntusso.py", line 141, in find_oauth_token_sync
    sso.find_credentials()
  File "/usr/share/software-center/softwarecenter/backend/login_impl/login_sso.py", line 74, in find_credentials
    self.proxy.find_credentials(self.appname, self._get_params())
  File "/usr/lib/python2.7/dist-packages/dbus/proxies.py", line 70, in __call__
    return self._proxy_method(*args, **keywords)
  File "/usr/lib/python2.7/dist-packages/dbus/proxies.py", line 145, in __call__
    **keywords)
  File "/usr/lib/python2.7/dist-packages/dbus/connection.py", line 651, in call_blocking
    message, timeout)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

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

1
задан 15 October 2015 в 15:41

4 ответа

wget можно загрузить на стандартный вывод с помощью -O-.

 wget http://example.com/some-file.html -O- \
     | md5sum \
     | cut -f1 -d' ' \
     | diff - <(md5sum local-file.html | cut -f1 -d' ')

md5sum добавляет имя файла после MD5, вы можете удалить его с помощью cut.

1
ответ дан 23 May 2018 в 16:39
  • 1
    Не могли бы вы объяснить, что делает diff - <(md5sum local-file.html | cut -f1 -d' ')? – Finlay Roelofs 15 October 2015 в 13:35
  • 2
    @FinlayRoelofs: он запускает diff на выходе канала и выводит команду в подстановке процесса <(...), т. Е. Сравнивает суммы MD5 загруженного файла и локального файла в соответствии с запросом. – choroba 15 October 2015 в 14:17
 wget -q -O- http://example.com/your_file | md5sum | sed 's:-$:local_file:' | md5sum -c

Замените http://example.com/your_file URL вашего онлайн-файла и local_file с именем вашего локального файла

1
ответ дан 23 May 2018 в 16:39
  • 1
    Не могли бы вы объяснить, что делает sed? – Finlay Roelofs 15 October 2015 в 13:35
  • 2
    Вывод md5sum - это строка, содержащая контрольную сумму и имя файла. md5sum -c проверяет это имя файла для контрольной суммы. команда sed заменяет -, которую md5sum использует для stdin с именем локального файла, поэтому md5sum -c в конце проверяет, что контрольная сумма локального файла является файлом онлайн-файла. – Florian Diesch 15 October 2015 в 13:45

Вы также можете просто сделать это напрямую. Используйте wget или curl для печати содержимого удаленного файла, а также распечатайте содержимое локального файла. Перейдите на md5sum и сравните вывод:

$ md5sum <(wget  http://www.exacmple.com/file -O- 2>/dev/null) <(cat localfile) 
733f328d8cff7dd89970ec34a70aa14f  /dev/fd/63
733f328d8cff7dd89970ec34a70aa14f  /dev/fd/62

Первая строка будет удаленным файлом md5sum, а вторая - местным.

1
ответ дан 23 May 2018 в 16:39

Через wget и md5sum и awk как длинный однострочный =)

awk 'FNR == NR {a[0]=$1; next} {if (a[0]==$1) {print "match"; exit} {print "no match"}}'\
 <(wget -O- -q URL | md5sum)\
 <(md5sum local_file)

Пример

$ awk 'FNR == NR {a[0]=$1; next} {if (a[0]==$1) {print "match"; exit} {print "no match"}}' <(wget -O- -q http://security.ubuntu.com/ubuntu/pool/main/h/hunspell/libhunspell-1.2-0_1.2.8-6ubuntu1_i386.deb | md5sum) <(md5sum libhunspell-1.2-0_1.2.8-6ubuntu1_i386.deb)
match

$ awk 'FNR == NR {a[0]=$1; next} {if (a[0]==$1) {print "match"; exit} {print "no match"}}' <(wget -O- -q http://security.ubuntu.com/ubuntu/pool/main/h/hunspell/libhunspell-1.2-0_1.2.8-6ubuntu1_i386.deb | md5sum) <(md5sum foo) 
no match
0
ответ дан 23 May 2018 в 16:39

Другие вопросы по тегам:

Похожие вопросы: