LXD 스냅샷 이름 배열 가져오기

LXD 스냅샷 이름 배열 가져오기

저는 이것에 매우 익숙하지 않습니다 . 누군가 스냅샷 이름 목록에서 배열을 얻는 grep방법을 알려줄 수 있습니까 (bash노트:이름만) 만들 때 lxc info mycontainer?

내 현재 결과는 다음과 같습니다.

root@hosting:~/LXC-Commander# lxc info mycontainer --verbose
Name: mycontainer
Remote: unix:/var/lib/lxd/unix.socket
Architecture: x86_64
Created: 2017/05/01 21:27 UTC
Status: Running
Type: persistent
Profiles: mine
Pid: 23304
Ips:
  eth0: inet    10.58.122.150   vethDRS01G
  eth0: inet6   fd9b:16e1:3513:f396:216:3eff:feb1:c997  vethDRS01G
  eth0: inet6   fe80::216:3eff:feb1:c997        vethDRS01G
  lo:   inet    127.0.0.1
  lo:   inet6   ::1
Resources:
  Processes: 1324
  Memory usage:
    Memory (current): 306.63MB
    Memory (peak): 541.42MB
  Network usage:
    eth0:
      Bytes received: 289.16kB
      Bytes sent: 881.73kB
      Packets received: 692
      Packets sent: 651
    lo:
      Bytes received: 1.51MB
      Bytes sent: 1.51MB
      Packets received: 740
      Packets sent: 740
Snapshots:
  2017-04-29-mycontainer (taken at 2017/04/29 21:54 UTC) (stateless)
  2017-04-30-mycontainer (taken at 2017/04/30 21:54 UTC) (stateless)
  2017-05-01-mycontainer (taken at 2017/05/01 21:54 UTC) (stateless)

내 최종 목표는 다음과 같은 배열을 포함하는 것입니다.2017-04-29-mycontainer 2017-04-30-mycontainer 2017-05-01-mycontainer

답변1

lxc list --format=json사용 가능한 모든 다양한 컨테이너에 대한 많은 정보가 포함된 JSON 문서를 받게 됩니다 .

lxc list mycontainer --format=json이름이 문자열로 시작하는 컨테이너로 제한됩니다 mycontainer( 'mycontainer$'정확한 일치를 위해).

JSON을 구문 분석하는 것은 일반적으로 거의 자유 형식의 텍스트 문서를 구문 분석하는 것보다 더 안전합니다.

스냅샷 이름 추출사용jq:

$ lxc list mycontainer --format=json | jq -r '.[].snapshots[].name'

그러면 다음과 유사한 목록이 제공됩니다.

2017-04-29-mycontainer
2017-04-30-mycontainer
2017-05-01-mycontainer

배열에 넣으려면 다음을 수행하십시오 bash.

snaps=( $( lxc list mycontainer --format=json | jq -r '.[].snapshots[].name' ) )

이렇게 하면 *?[스냅샷 이름에 셸 특정 문자( )를 포함하면 파일 이름 글로빙이 발생하게 됩니다. set -f명령 이전(및 이후) set +f에 이런 일이 발생하지 않도록 방지 할 수 있습니다 .

스냅샷만 반복하려는 경우:

lxc list mycontainer --format=json | jq -r '.[].snapshots[].name' |
while read snap; do
   # do something with "$snap"
done

관련 정보