Для переключения звука микрофона по умолчанию в pulseaudio:
Убедитесь, что у вас есть pacmd (из пакета pulseaudio-utils) и notify-send (от libnotify-bin). Используйте этот скрипт:#!/bin/sh
pacmd list-sources | awk '\
BEGIN {default_found=0;}
/^[\t ]*\*/ {default_found=1;}
/^[\t ]*name:/ {
if (default_found) {
name=$2;
gsub("[<>]", "", name);
}
}
/^[\t ]*muted:/ {
if (default_found) {
if ($2=="yes") {
mute=0;
icon="microphone-sensitivity-medium";
status="unmuted"
} else {
mute=1;
icon="microphone-sensitivity-muted";
status="muted"
}
system("pacmd set-source-mute " name " " mute);
system("notify-send --expire-time 1000 --icon " icon " Microphone: " status);
exit;
}
}
/^[\t ]*index:/{if (default_found) exit;}'
В tcsh:
echo | openssl s_client -connect host.example.com:443 |& openssl x509 -fingerprint -noout
Это также достаточно:
openssl x509 -fingerprint -in server.crt
Это довольно легко сделать с командой openssl и ее клиентскими функциями.
Следующий маленький скрипт возьмет данный домен (без префикса https) и отпечаток SHA-1 и выйдет без ошибки (0), если найденный отпечаток пальца совпадает, но с кодом выхода 1, если нет совпадения. Затем вы можете включить его в свой скрипт, просто проверив последний код выхода $?:
#!/bin/bashsource
#!/usr/bin/perl
# https://security.stackexchange.com/questions/20399/how-to-verify-the-ssl-fingerprint-by-command-line-wget-curl
# Code snippets taken from Net::SSLeay documentation and mildly modified.
# Requires a newer version of SSLeay (tested with 1.48)
# Needless to say, verify correct $host and $fingerprint before testing!!!
use Net::SSLeay qw(get_https3);
$host = "www.google.com";
$port = 443;
$fingerprint = "C1:95:6D:C8:A7:DF:B2:A5:A5:69:34:DA:09:77:8E:3A:11:02:33:58";
($p, $resp, $hdrs, $server_cert) = get_https3($host, $port, '/');
if (!defined($server_cert) || ($server_cert == 0)) {
warn "Subject Name: undefined, Issuer Name: undefined";
} elsif (Net::SSLeay::X509_get_fingerprint($server_cert, "sha1") ne $fingerprint) {
warn 'Invalid certificate fingerprint '
. Net::SSLeay::X509_get_fingerprint($server_cert, "sha1")
. ' for ' . Net::SSLeay::X509_NAME_oneline(
Net::SSLeay::X509_get_subject_name($server_cert));
} else {
print $p;
}
Как указано в документации Net :: SSLeay, этот метод означает проверку после транзакции HTTP и поэтому не должен использоваться, если вы хотите проверить, что вы разговариваете с правильный сервер перед отправкой данных. Но если все, что вы делаете, решает, доверять ли вам то, что вы только что загрузили (что звучит так, как будто вы со своей ссылки № 4) это нормально.
Это мой повседневный скрипт:
curl --insecure -v https://www.google.com 2>&1 | awk 'BEGIN { cert=0 } /^\* Server certificate:/ { cert=1 } /^\*/ { if (cert) print }'
Выход:
* Server certificate:
* subject: C=US; ST=California; L=Mountain View; O=Google Inc; CN=www.google.com
* start date: 2016-01-07 11:34:33 GMT
* expire date: 2016-04-06 00:00:00 GMT
* issuer: C=US; O=Google Inc; CN=Google Internet Authority G2
* SSL certificate verify ok.
* Server GFE/2.0 is not blacklisted
* Connection #0 to host www.google.com left intact