# paste <first file> <second file> ......
[命令] Linux 目标网站 SSL 证书的显示 (OpenSSL 版)
内容一:查看完整信息
# openssl s_client -connect eternalcenter.com:443
CONNECTED(00000003)
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = R3
verify return:1
depth=0 CN = eternalcenter.com
verify return:1
---
Certificate chain
0 s:CN = eternalcenter.com
i:C = US, O = Let's Encrypt, CN = R3
1 s:C = US, O = Let's Encrypt, CN = R3
i:C = US, O = Internet Security Research Group, CN = ISRG Root X1
2 s:C = US, O = Internet Security Research Group, CN = ISRG Root X1
i:O = Digital Signature Trust Co., CN = DST Root CA X3
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIFKjCCBBKgAwIBAgISAxDxly99eBiarmHggFEmDJoMMA0GCSqGSIb3DQEBCwUA
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
EwJSMzAeFw0yMTEyMTkxMzA4MzJaFw0yMjAzMTkxMzA4MzFaMBwxGjAYBgNVBAMT
EWV0ZXJuYWxjZW50ZXIuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAtCcCuOqBrWP4eo//VBEXh668EjwrE1eXz2CS4GIN4ddn0rS8LHGFOrB92R8E
OnaYeTKpZjzNM3NA/AG/Gq5mTRZGTpyTasHEb/phwXdhrtJWdbMtQjGFSg8rXSB8
cap5NGP/NxAy8FV0MbXftg5t9VgBoCMGUzioSHZTEjefq+/OZwlP7RzxZN3bwj1D
61gWSw6q1X3bsi8ttwbkkiJfvjXo2KIeGOAnY10X+FPJmVa7jonhOuljrX4CYgnd
SCxmsfgwGMUzRu27VB1rEbKqvSr6tb9KfwFiqsZd5tTi7RW6WMqA0VbDV7BbDqLP
OzcturwRtXfzHjJxssy9zhnrQQIDAQABo4ICTjCCAkowDgYDVR0PAQH/BAQDAgWg
MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0G
A1UdDgQWBBQMGBCfBuZxTAS8VcBI/13ugqc2RDAfBgNVHSMEGDAWgBQULrMXt1hW
y65QCUDmH6+dixTCxjBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6
Ly9yMy5vLmxlbmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL3IzLmkubGVuY3Iu
b3JnLzAcBgNVHREEFTATghFldGVybmFsY2VudGVyLmNvbTBMBgNVHSAERTBDMAgG
BmeBDAECATA3BgsrBgEEAYLfEwEBATAoMCYGCCsGAQUFBwIBFhpodHRwOi8vY3Bz
LmxldHNlbmNyeXB0Lm9yZzCCAQYGCisGAQQB1nkCBAIEgfcEgfQA8gB3AN+lXqto
gk8fbK3uuF9OPlrqzaISpGpejjsSwCBEXCpzAAABfdMFzUsAAAQDAEgwRgIhAMFF
1orPZPnpCyhzwX2xZAZjJnOmDGmBjAl0tHnX4nEWAiEAqZTUwjrdwZAL+kDAgpzG
Me2RnGMseDBY8Oy2sefUgsAAdwBGpVXrdfqRIDC1oolp9PN9ESxBdL79SbiFq/L8
cP5tRwAAAX3TBc1zAAAEAwBIMEYCIQDLhR0nbVHEIL1uw9hRuv/ZbFjf91W/M4Jp
od7NTMQZbAIhAKEAAfmdu0nVHklyS2At1VValwQ6vNbqd0NQ85giG606MA0GCSqG
SIb3DQEBCwUAA4IBAQB/s+rZEaNrlUyBVnbxv5X9NTBd8buBOkR1qVswlS1R2i8B
pRjeJmgbiMzM2z5Mvx0yTIiCyXXUc3YaqoyxvddaQam9nlLGr0nKX9T5DkE7y0Fh
Qg0/ievRQF86XnDqQBxDR32jj5A1nKEiJrNCqugCWTAABndW3tvzK5DOsF2BfjJC
mcjwiKaSCjFVpf+KzLWS3UEW+DRTKOLBucXpenS7QEcQu4K6ShNSL7+K6UOZEbFu
uCRjOawCJFF7EH5vzRBy696Fu4EmzCV+c4rV8K8EcuCCQQeOTWJ/93Jv6U6kGrmE
P6wlcHFy1tZhTAmXf/qcpE3sGeH58OlNNiVmNJdH
-----END CERTIFICATE-----
subject=CN = eternalcenter.com
issuer=C = US, O = Let's Encrypt, CN = R3
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 4695 bytes and written 412 bytes
Verification: OK
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-GCM-SHA384
Session-ID: D63BC88824810A4D43ACE901AD4FF2D82073BC6F0D8B2DE71F6310CA1C87707F
Session-ID-ctx:
Master-Key: A6836430C394B96DDD5552867D49802F94AAC8BF5E882100F0D27185CF5CFD6A946B94D87652E44A6684FC9781D16D90
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 300 (seconds)
TLS session ticket:
0000 - bb be 55 e0 4b 6d c3 08-cd bc 45 6e 79 67 fc eb ..U.Km....Enyg..
0010 - 30 d5 4c 8a 5a c8 f7 13-42 4b 1d 02 ce 94 c0 b8 0.L.Z...BK......
0020 - d7 cf f6 f0 ee 9d 49 5b-0a c8 a4 1a 8b dd 8a e0 ......I[........
0030 - 66 83 52 9b 31 4d da 9e-d5 05 1a 70 ca e9 86 5e f.R.1M.....p...^
0040 - f5 09 a1 1c 92 6b 64 90-b7 e1 0e ec 30 e2 26 68 .....kd.....0.&h
0050 - 49 13 10 9e 3e a5 e0 13-a2 f1 7a 7c c5 ad 99 6c I...>.....z|...l
0060 - e9 f6 1d 46 5f cc f6 f9-c5 f6 05 49 53 78 7e ea ...F_......ISx~.
0070 - 8c 17 eb 8d 96 c3 3f 92-fe e0 f0 f6 86 59 05 c8 ......?......Y..
0080 - d2 8c 27 6b 9d 65 38 20-84 d4 23 54 35 70 19 4d ..'k.e8 ..#T5p.M
0090 - db 35 6d f4 44 50 d7 6e-a5 87 2b 32 e5 f8 42 88 .5m.DP.n..+2..B.
00a0 - 28 e2 ab 35 e1 2c 06 71-e5 b2 82 cb 3a 75 cc 72 (..5.,.q....:u.r
00b0 - ed ae e1 12 ff 82 6c 3a-3a 38 7a 8c 3c 9c f1 10 ......l::8z.<...
00c0 - 78 b8 37 87 c3 a2 00 76-01 72 8c ef 3b 20 48 28 x.7....v.r..; H(
Start Time: 1644931899
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: yes
---
closed
(补充:这里以显示 eternalcenter.com 的 443 端口的 SSL 证书为例)
内容二:查看主要信息
# echo | openssl s_client -connect scc.suse.com:443 | head -n 16
CONNECTED(00000003)
depth=2 C = US, O = Internet Security Research Group, CN = ISRG Root X1
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = R3
verify return:1
depth=0 CN = eternalcenter.com
verify return:1
---
Certificate chain
0 s:CN = eternalcenter.com
i:C = US, O = Let's Encrypt, CN = R3
1 s:C = US, O = Let's Encrypt, CN = R3
i:C = US, O = Internet Security Research Group, CN = ISRG Root X1
2 s:C = US, O = Internet Security Research Group, CN = ISRG Root X1
i:O = Digital Signature Trust Co., CN = DST Root CA X3
---
(补充:这里以显示 eternalcenter.com 的 443 端口的 SSL 证书为例)
[命令] Linux 命令 logger (手动向系统日志写入信息)
内容一:手动向系统日志写入信息
# logger [This is test message]
(补充:这里以往系统日志里写入一条包含 This is test message 内容的信息为例)
内容二:显示手动向系统日志写入信息
# grep "This is test message" /var/log/messages
(补充:这里在系统里查找一条包含 This is test message 内容的信息为例)
[命令] Linux 命令 iftop (显示系统联通状态)
# iftop
(补充:此时会不停地显示系统联通状态,按下 “q” 键后退出)
# iftop
interface: eth0
IP address is: 10.10.10.129
IPv6 address is: fdb2:2c26:f4e4:0:5940:b748:da58:4f3
MAC address is: 00:1c:42:c9:3c:81
[命令] Linux 命令 {} (设置字符串默认值、截取字符串、替换字符串里的内容)
内容一:设置字符串默认值
1.1 当要替换的变量未定义或为空时则给予其 1 个默认值
# value=
# newvalue=${value:-eternalcenter}
# echo $newvalue
eternalcenter
# value=mingyuzhu
# newvalue=${value:-eternalcenter}
# echo $newvalue
mingyuzhu
或者:
# value=
# newvalue=${value:=eternalcenter}
# echo $newvalue
eternalcenter
# value=mingyuzhu
# newvalue=${value:=eternalcenter}
# echo $newvalue
mingyuzhu
(补充:这里以当变量 value 存在且为空时则变量 newvalue 的值为 eternalcenter 为例)
1.2 当要替换的变量已定义且不为空时则给予其 1 个默认值
# value=
# newvalue=${value:+eternalcenter}
# echo $newvalue
# value=mingyuzhu
# newvalue=${value:+eternalcenter}
# echo $newvalue
eternalcenter
(补充:这里以当变量 value 存在且不为空时则变量 newvalue 的值为 eternalcenter 为例)
内容二:截取变量某一部分内容 (以字符在字符串的位置作为参照)
2.1 截取从第某个位置字符开始的所有内容
2.1.1 截取字符串中从左数第某个字符开始到左边的所有内容 (包含此字符本身)
# str=eternalcenter.com
# echo ${str::2}
et
或者:
# str=eternalcenter.com
# echo ${str:0:2}
et
或者:
# str=eternalcenter.com
# echo ${str:offset:2}
et
(补充:这里以截取字符串中从左数第 2 个字符和左边的所有内容为例)
2.1.2 截取字符串中从右数第某个字符开始到左边的所有内容 (不包含此字符本身)
# str=eternalcenter.com
echo ${str::0-2}
eternalcenter.c
(补充:这里以截取字符串中从右数第 2 个字符开始左边的所有内容为例)
2.1.3 截取字符串中从右数第某个字符开始到右边的所有内容 (包含此字符本身)
# str=eternalcenter.com
# echo ${str:0-2}
om
(补充: 截取字符串中从除右数第 2 个字符开始到右边的所有内容)
2.2 截取从第某个位置字符开始几个位置的字符的内容
2.2.1 截取字符串中从左数第某个字符开始几个字符的内容 (不包含此字符本身)
# str=eternalcenter.com
# echo ${str:5:4}
alce
(补充:这里以截取字符串中从左数第 5 个字符开始 4 个字符的内容为例)
(注意:在此情况下是从第 0 字符开始数第 1 个字符的,而不是从第 1 个字符开始数第 1 个字符)
2.2.2 截取字符串中从右数第某个字符开始几个字符的内容 (包含此字符本身)
# str=eternalcenter.com
# echo ${str:0-5:4}
r.co
(补充:这里以截取字符串中从右数第 5 个字符开始右边 4 个字符的内容为例)
(注意:在此情况下是从第 0 字符开始数第 1 个字符的,而不是从第 1 个字符开始数第 1 个字符)
2.3 截取从第某个位置字符到第某个位置字符的内容
2.3.1 截取字符串中从左数第某个字符到从右数第某个字符中的所有内容 (不包含这些字符本身)
# str=eternalcenter.com
# echo ${str:1:-4}
ternalcenter
(补充:这里以截取字符串中从左数第 1 个字符到右数第 4 个字符中的所有内容为例)
(注意:在此情况下是从第 0 字符开始数第 1 个字符的,而不是从第 1 个字符开始数第 1 个字符)
2.3.2 截取字符串中从右数第某个字符到从右数第某个字符中的所有内容 (不包含这些字符本身)
# str=eternalcenter.com
# echo ${str:0-5:0-1}
r.co
或者:
# str=eternalcenter.com
# echo ${str:0-5:-1}
r.co
(补充:这里以截取字符串中从右数第 1 个字符到从右数第 4 个字符中的所有内容为例)
(注意:在此情况下是从第 0 字符开始数第 1 个字符的,而不是从第 1 个字符开始数第 1 个字符)
2.4 截取字符串中除从左数第某个字符外的所有内容
# str=eternalcenter.com
# echo ${str:2}
ernalcenter.com
(补充:截取字符串中从除左数第 2 个字符开始到右边的所有内容)
内容三:截取变量某一部分内容 (以字符作为参照)
3.1 截取变量前一部分内容 (去尾)
3.1.1 截取变量右数第 1 个某个字符到左边的所有内容 (去尾) (不包含此字符本身)
# value=ming:yu:zhu
# newvalue=${value%:*}
# echo $newvalue
ming:yu
(补充:这里以截取变量 value 右数第 1 个冒号 “:” 左边的所有值并赋予给变量 newvalue 为例)
3.1.2 截取变量右数最后某个字符到左边的所有内容 (最大限度去尾) (不包含此字符本身)
# value=ming:yu:zhu
# newvalue=${value%%:*}
# echo $newvalue
ming
(补充:这里以截取变量 value 右数最后 1 个冒号 “:” 左边的所有并赋予给变量 newvalue 内容为例)
3.1.3 截取变量右数最后某几个字符到左边的所有内容 (使用变量) (去尾) (不包含此字符本身)
# value=mingyuzhu
# novalue=zhu
# newvalue=${value%%$novalue}
# echo $newvalue
mingyu
(补充:这里以截取变量 value 右数最后 1 个 zhu 左边的所有内容并赋予给变量 newvalue 为例)
3.2 截取变量后一部分内容 (掐头)
3.1 截取变量左数第 1 个某个字符到右边的所有内容 (掐头) (不包含此字符本身)
# value=ming:yu:zhu
# newvalue=${value#*:}
# echo $newvalue
yu:zhu
(补充:这里以截取变量 value 左数第 1 个冒号 “:” 右边的所有内容并赋予给变量 newvalue 为例)
3.2 截取变量左数最后某个字符到右边的所有内容 (最大限度掐头) (不包含此字符本身)
# value=ming:yu:zhu
# newvalue=${value##*:}
# echo $newvalue
zhu
(补充:这里以截取变量 value 左数最后 1 个冒号 “:” 右边的所有内容并赋予给变量 newvalue 为例)
3.3 去除变量左数最后某个字符到右边的所有内容 (使用变量) (掐头) (不包含此字符本身)
# value=mingyuzhu
# novalue=ming
# newvalue=${value##$novalue}
# echo $newvalue
yuzhu
(补充:这里以截取变量 value 左数最后 1 个 ming 右边的所有内容并赋予给变量 newvalue 为例)
内容四:当变量已定义且不为空时则将变量中的某部分替换成另一部分
# value=mingyuzhu
# noneedvalue=yu
# needvalue=zhu
# newvalue=${value/$noneedvalue/$needvalue}
# echo $newvalue
mingzhuzhu
(补充:这里以将变量 value 中的 yu 替换成 zhu 并赋予给变量 newvalue 为例)