我想获取已安装订阅的结束日期,当前正在使用
subscription-manager list --installed | grep Ends | awk '{print $2 }')
当有多个订阅时,就会变得很复杂。如何获取与订阅中带有“服务器”名称的订阅相匹配的结束日期和名称?
+-------------------------------------------+
Installed Product Status
+-------------------------------------------+
Product Name: Red Hat Enterprise Linux Server
Product ID: 69
Version: 7.7
Arch: x86_64
Status: Subscribed
Status Details:
Starts: 27/11/19
Ends: 27/11/20
Product Name: Red Hat Enterprise Linux High Availability for x86_64
Product ID: 83
Version: 7.7
Arch: x86_64
Status: Subscribed
Status Details:
Starts: 27/11/19
Ends: 27/11/20
这基本上是AdminBee方法的简化版本:
$ subscription-manager list --installed |
awk '{
if(sub(/^Product Name: */,"")){
a=0;
n=$0;
if(/<Server>/){ a++ }
}
}/Ends/ && a{print n,$2}'
Red Hat Enterprise Linux Server 27/11/20
脚本将设置a
为0
当前行是否以开头Product Name:
,因为我们希望每次都重置它,然后,如果该行也包含字符串Server
,则将其设置为1
。然后,如果当前行以开头Ends:
,并且a
不为0,它将打印第二个字段。
请注意,这也将匹配Product Name:
包含notAServer
或包含的其他任何内容Server
。要仅限制单词匹配,可以改用它(假设您有gawk
GNU awk):
subscription-manager list --installed |
gawk '{if(sub(/^Product Name: */,"")){a=0; n=$0;if(/\<Server\>/){a++}} }/Ends/ && a{print n,$2}'
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句