ค้นหาการอัปเดต yum ครั้งล่าสุด


13

yum updateกำลังสร้างสคริปต์เพื่อหาเมื่อรายชื่อของเซิร์ฟเวอร์ได้รับการปรับปรุงล่าสุดได้อย่างเต็มที่

ฉันสามารถค้นหาได้โดยhistory |grep "yum update"|head -n 1ปัญหาคือว่าผู้ใช้สามารถเปิดแล้ว แต่ไม่ได้พิมพ์ "y" ในพรอมต์

อีกวิธีที่ฉันลองใช้คือ yum history

ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
   109 | <xyz user>              | 2015-08-20 07:18 | Erase          |   1 E<
   108 | root <root>              | 2015-08-18 08:56 | Update         |    3 >
   107 | root <root>              | 2015-08-14 07:39 | Update         |    1
   106 | root <root>              | 2015-08-14 07:38 | Update         |    1
   105 | root <root>              | 2015-08-14 07:38 | Update         |    3
   104 | root <root>              | 2015-08-13 07:31 | Update         |    1
   103 | root <root>              | 2015-08-11 05:46 | Update         |    1
   102 | root <root>              | 2015-08-11 05:46 | Update         |    2
   101 | root <root>              | 2015-08-11 05:45 | Update         |    3
   100 | root <root>              | 2015-08-11 05:45 | Update         |    3
    99 | root <root>              | 2015-08-10 20:41 | Update         |    1
    98 | root <root>              | 2015-08-05 02:35 | Update         |    1
    97 | root <root>              | 2015-05-14 10:52 | Update         |    1
    96 | root <root>              | 2015-05-01 02:59 | Obsoleting     |    2
    95 | root <root>              | 2015-04-09 16:06 | Update         |    1  <
    94 | <xyz.user>            | 2015-03-28 08:49 | Update         |    1 ><
    93 | <xyz.usert>            | 2015-03-28 08:14 | Erase          |    3 ><
    92 | <xyz.user>            | 2015-03-13 07:46 | Install        |    6 ><
    91 | <xyz.user>             | 2015-03-13 05:45 | I, U           |   24 >
    90 | root <root>              | 2015-03-04 01:24 | Update         |    3

แต่ฉันไม่สามารถหาวิธีกำหนดวันที่yum updateเปิดตัวและประสบความสำเร็จได้ เนื่องจากถ้าฉันตรวจสอบเช่นธุรกรรม ID 108 ซึ่งถูกทำเครื่องหมายเป็น "อัปเดต" เปิดตัวในวันที่ 18 ฉันไม่พบคำสั่งyum updateสำหรับวันที่นั้น:

history |grep 2015 |grep "yum update"

 5182  20150313-054444 > yum update

เส้นทางอื่นที่ฉันลองใช้ด้วย/var/log/yum.logแต่yum.logจะแสดงการติดตั้งและอัปเดตด้วย หากแพ็กเกจถูกอัพเดตขณะติดตั้งแพ็กเกจ e: g: yum install varnishและต้องการการอัพเดตแพ็กเกจบางอย่างเช่น: (varnish-libs-2.1.5-5.el6.i686, 3.0.7-1.el6.i686 เป็นต้น) สิ่งนี้ จะปรากฏเป็นอัปเดตใน yum.log

มีวิธีหาวันที่yum updateเปิดตัวและประสบความสำเร็จหรือไม่?


1
ซ้ำกันของserverfault.com/questions/389650/… "วิธีการตรวจสอบว่าการอัปเดตยำครั้งล่าสุดได้รับการดำเนินการครั้งสุดท้ายเมื่อใด"
steve

คำตอบ:


15

คุณเกือบตอบคำถามของคุณ นี่คือวิธีที่คุณสามารถค้นหาแพ็คเกจ 5 อัพเดทล่าสุด:

grep Updated: /var/log/yum.log | tail -5

ตัวอย่างผลลัพธ์:

Aug 05 13:28:34 Updated: virt-manager-common-1.1.0-9.git310f6527.fc21.noarch
Aug 05 13:28:34 Updated: glusterfs-libs-3.5.5-2.fc21.i686
Aug 05 13:28:35 Updated: virt-manager-1.1.0-9.git310f6527.fc21.noarch
Aug 05 13:28:36 Updated: virt-install-1.1.0-9.git310f6527.fc21.noarch
Aug 05 13:28:38 Updated: glusterfs-3.5.5-2.fc21.i686

1
แมวถูกใช้ในทางที่ผิด (ดูที่ การใช้ประโยชน์จากรางวัลแมว ) และ-10ไม่จำเป็นเมื่อหางแสดงสิบบรรทัดต่อค่าเริ่มต้น: ดังนั้นจึงดีกว่า: grep Updated: /var/log/yum.log | tail
sebelk

1
คุณเป็นคนใจร้อนอย่างแน่นอน! แต่นั่นเป็นนิสัยเก่าแก่ที่จะทำให้ทุกอย่างเป็นเรื่องจำเป็น) 10 (เปลี่ยนเป็น 5) เป็นสิ่งจำเป็นเพราะคุณสามารถเลือกบันทึกจำนวนมากเพื่อ grep นั่นเป็นเหตุผลที่ฉันออกหมายเลขด้วย grep
obohovyk

ข้อมูลนี้แสดงเฉพาะ 5 แพคเกจที่อัปเดตล่าสุดเท่านั้น พิจารณา Senario ด้านล่าง: หากมีการอัพเดทแพ็คเกจขณะติดตั้งแพคเกจ e: g: yum ติดตั้งวานิชและจำเป็นต้องมีการอัพเดทแพ็คเกจบางอย่างเช่น: (varnish-libs-2.1.5-5.el6.i686,3.0.7-1 .el6.i686 ฯลฯ ) สิ่งนี้จะปรากฏเป็นอัปเดตใน yum.log ในขณะที่ฉันต้องการเมื่อyum updateเปิดตัวและทำงานได้สำเร็จไม่ใช่แพ็คเกจที่อัปเดตล่าสุด 5 รายการ
Kheshav Sewnundun

คุณอาจต้องการใช้ auditd และสร้างกฎสำหรับการดำเนินการ yum
sebelk

1
มีความเป็นไปได้ว่า yum.log จะถูกล้างออกหากไม่ได้ใช้ yum ตั้งแต่มีการหมุนบันทึก หากเป็นกรณีนี้คุณสามารถ grep ผ่านเช่น/var/log/yum.log-20180101etc
user8675309

6

ก่อนอื่นคุณต้องกำหนดความหมายของ "การอัพเกรด" เช่น. อัพเกรดด้วยเคอร์เนลที่ใหม่กว่าเท่านั้นที่จะทำการติดตั้ง (และอาจเป็นการลบอันเก่ากว่า) หากใครบางคนไม่ "อัพเกรด foo" จะนับว่า? แล้ว "distro-sync" ที่จบลงด้วยการอัพเกรด (หรือถ้าไม่ได้) มันจะนับถ้าการทำธุรกรรมล้มเหลว?

จากนั้นหยุดการส่งออก greping ก็จะนำไปสู่ความเจ็บปวดและความทุกข์ทรมาน

การใช้ API นั้นค่อนข้างง่ายเช่น (ครั้งล่าสุดที่ธุรกรรมเริ่มอัพเกรดแพ็คเกจ):

import yum
import time

yb = yum.YumBase()
for old in yb.history.old():
    if "Update" in (hpkg.state for hpkg in old.trans_data):
        print "Latest Update:", time.ctime(old.beg_timestamp)
        break

1

คำสั่งต่อไปนี้แสดงรายการแพ็คเกจ RPM ที่เพิ่งติดตั้งหรืออัพเดต:

rpm -qa --last  | head

อาจมีแพ็คเกจที่ติดตั้งภายนอก YUM ด้วย คำสั่งนี้ยังสามารถรันได้โดยไม่มีสิทธิ์รูท

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.