사용 가능한 업데이트가 있는지 확인하는 방법은 무엇입니까?


8

12.04 LTS 우분투 서버를 실행 중입니다. 업데이트가 제공 될 때 알림을받을 수 있다면 좋을 것 같습니다. 그러나 나는 알아야 할 방법을 찾을 수 없습니다 ...

apt-get맨 페이지를 보았습니다 . 그것으로부터 나는 apt-get -s upgrade질문을 막지 않고 스크립트에서 apt-get 출력을 얻는 데 사용할 수있었습니다 .

이제 차이점을 분명히 알 수 있습니다.

업데이트가 가능합니다 :

apt-get -s upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be upgraded:
  dpkg dpkg-dev libdpkg-perl
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Inst dpkg [1.16.1.2ubuntu7.2] (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [amd64])
Conf dpkg (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [amd64])
Inst dpkg-dev [1.16.1.2ubuntu7.2] (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all]) []
Inst libdpkg-perl [1.16.1.2ubuntu7.2] (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all])
Conf libdpkg-perl (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all])
Conf dpkg-dev (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all])

업데이트가 없습니다 :

apt-get -s upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

그러나 나는 거기에서 어떻게 진행 해야할지 모르겠다. bash 스크립트 (또는 PHP 스크립트)에서 사용 가능한 업데이트가 있는지 여부를 어떻게 알 수 있습니까?

편집하다 :

여기 내 현재 bash 코드가 있습니다. 작동하지 않습니다.

updates_available=`/etc/update-motd.d/90-updates-available`

if [ "${updates_available}" = "0 packages can be updated. 0 updates are security updates." ];
then
   echo "No updates are available"
else
   echo "There are updates available"
fi

글쎄, 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.업데이트가 없다면 말할 것 입니다.
Nattgew

답변:


18

에 대한 매뉴얼 페이지를 읽고 motd(5), pam_motd(8)하고 update-motd(5). 내 시스템에 /etc/update-motd.d/90-updates-available원용 /usr/lib/update-notifier/update-motd-updates-available내가 로그인 할 때이 표시됩니다

19 packages can be updated.
12 updates are security updates.

조금 더 깊이 설명하면 "...- updates-available"스크립트가 호출 /usr/lib/update-notifier/apt-check --human-readable됩니다. (파이썬)을 읽으면 사람이 읽을 수있는 플래그를 생략하면 stderr에 "19; 12"가 출력된다는 것을 알 수 있습니다. 우리는 이것을 가지고 그것을 잡을 수 있습니다 :

IFS=';' read updates security_updates < <(/usr/lib/update-notifier/apt-check 2>&1)
echo $updates
echo $security_updates 
19
12

이제 당신은 말할 수 있습니다 :

if (( updates == 0 )); then
    echo "No updates are available"
else
    echo "There are updates available"
fi

그것으로 가서 if [ / etc / update-motd.d / 90-updates-available` = "0 개의 패키지를 업데이트 할 수 있습니다. 0 개의 업데이트는 보안 업데이트입니다." ]; 그때 ... fi`
Adeline

불행히도 수표가 작동하지 않습니다 (이전 회신에 잊어 버린 따옴표를 추가했습니다.) 새 줄과 관련이 있다고 생각합니다. 답장에서 파생 된 코드로 게시물을 업데이트했습니다.
Adeline

세련된 답변.
glenn jackman

멋진 답변 @glennjackman. 나는과 대답에가는 google.com/search?q=apt-get+check+if+updates+are+available ) #ImNotHelpfulToday =
0xSheepdog
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.