apt-get이 완료되면 SSH를 통해 실행되는 비대화형 스크립트가 중단됩니다.

apt-get이 완료되면 SSH를 통해 실행되는 비대화형 스크립트가 중단됩니다.

Ubuntu Server 13.04에서 다음 비대화형 스크립트를 실행하면 중단됩니다.lxc-도커패키지가 설치되었습니다.

스크립트:

ssh -o StrictHostKeychecking=no -t -t -i $CERT $USER@$SERVER <<'ENDSSH'

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install software-properties-common
sudo DEBIAN_FRONTEND=noninteractive add-apt-repository -y ppa:dotcloud/lxc-docker
sudo DEBIAN_FRONTEND=noninteractive apt-get -y update
sudo DEBIAN_FRONTEND=noninteractive apt-get -y install lxc-docker

echo "some other actions here..."

exit #SSH session

ENDSSH
exit

모든 것이 괜찮아 보이지만 출력에서 ​​다음 줄 이후에 스크립트가 중단됩니다.

Processing triggers for ureadahead ...

1) 왜 이런 일이 발생합니까? 이런 일이 발생하지 않도록 하려면 어떻게 해야 합니까?

2) 그렇지 않은 경우 SSH 세션이 성공적으로 완료되었는지 어떻게 감지합니까?

설치의 마지막 몇 줄(축약):

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  bridge-utils bsdtar cgroup-lite debootstrap dnsmasq-base libapparmor1
  libarchive13 libcap2-bin liblxc0 liblzo2-2 libnetfilter-conntrack3
  libnettle4 libpam-cap libseccomp1 lxc lxc-templates python3-lxc
Suggested packages:
  bsdcpio lrzip libcap-dev btrfs-tools lvm2 lxctl qemu-user-static
The following NEW packages will be installed:
  bridge-utils bsdtar cgroup-lite debootstrap dnsmasq-base libapparmor1
  libarchive13 libcap2-bin liblxc0 liblzo2-2 libnetfilter-conntrack3
  libnettle4 libpam-cap libseccomp1 lxc lxc-docker lxc-templates python3-lxc
0 upgraded, 18 newly installed, 0 to remove and 29 not upgraded.
Need to get 2,495 kB of archives.
After this operation, 8,742 kB of additional disk space will be used.
Get:1 http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ raring/main liblzo2-2 amd64 2.06-1build1 [53.2 kB]
Get:2 http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ raring/main libnettle4 amd64 2.4-3 [94.7 kB]
.
.
.
.
.
.
Setting up libnetfilter-conntrack3:amd64 (1.0.1-1) ...
Setting up dnsmasq-base (2.65-1ubuntu1) ...
Setting up python3-lxc (0.9.0-0ubuntu3.2) ...
Setting up lxc (0.9.0-0ubuntu3.2) ...
lxc start/running
Setting up lxc dnsmasq configuration.
Setting up bsdtar (3.1.2-5ubuntu1) ...
Setting up libcap2-bin (1:2.22-1.2ubuntu2) ...
Setting up libpam-cap:amd64 (1:2.22-1.2ubuntu2) ...
Setting up cgroup-lite (1.8) ...
cgroup-lite start/running
Setting up debootstrap (1.0.46ubuntu1) ...
Processing triggers for ureadahead ...
Setting up lxc-docker (0.4.0-1) ...
docker start/running, process 2444
Setting up lxc-templates (0.9.0-0ubuntu3.2) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
Processing triggers for ureadahead ...

답변1

명백한 상황을 설명하기 위해(올바른 솔루션이 아닌 해결 방법으로) 스크립트를 서버로 보낸 다음 스크립트를 실행해 보세요...?

$ cat<<ENDSSH > /tmp/tmp.sh
sudo DEBIAN_FRONTEND=noninteractive apt-get ...
sudo DEBIAN_FRONTEND=noninteractive apt-get -y install lxc-docker
echo "some other actions here..."
exit
ENDSSH

그런 다음,

$ scp  /tmp/tmp.sh ${USER}@${SERVER}:/tmp/tmp.sh \
  && ssh $USER@$SERVER 'chmod u+x /tmp/tmp.sh && /tmp/tmp.sh; rm /tmp/tmp.sh'

이 명령도 종료되면 원격 명령을 백그라운드에서 실행하고 연결을 끊은 다음 다른 ssh 명령을 사용하여 스크립트 실행 결과를 검사해야 할 수 있습니다.

관련 정보