Commit 07ede904 by Daniel Lezcano Committed by Daniel Lezcano

Fix lxc-netstat script

Recent changes around the configuration tree broke the current implementation of the lxc-netstat. Instead of retrieving the init_pid in the /var/lxc/<name>/..., pick one in the cgroup tasks list. There is still a restriction with this command making impossible to run it as non-root, any idea is welcome :( Signed-off-by: 's avatarDaniel Lezcano <dlezcano@fr.ibm.com>
parent 3fb0a9bb
#!/bin/bash #!/bin/bash
# set -ex # set -ex
lxcpath=@LXCPATH@ lxcpath=/var/lib/lxc
exec="" exec=""
if [ ! -r $lxcpath ]; then if [ ! -r $lxcpath ]; then
...@@ -23,7 +23,7 @@ for i in $*; do ...@@ -23,7 +23,7 @@ for i in $*; do
done done
if [ -z "$exec" ]; then if [ -z "$exec" ]; then
exec @BINDIR@/lxc-unshare -s MOUNT -- @BINDIR@/lxc-netstat -n $name --exec $* exec /usr/bin/lxc-unshare -s MOUNT -- /usr/bin/lxc-netstat -n $name --exec $*
fi fi
if [ -z "$name" ]; then if [ -z "$name" ]; then
...@@ -31,20 +31,31 @@ if [ -z "$name" ]; then ...@@ -31,20 +31,31 @@ if [ -z "$name" ]; then
exit 1 exit 1
fi fi
if [ ! -d $lxcpath/$name ]; then cgroups=$(mount -l -t cgroup)
echo "'$name' does not exists" cgroup_path=""
exit 1
fi for i in "$cgroups"; do
cgroup_name=$(echo $i | awk ' { print $1 } ')
cgroup_path=$(echo $i | awk ' { print $3 } ')
if [ "$cgroup_name" == "lxc" ]; then
break;
fi
if [ ! -r $lxcpath/$name ]; then done
echo "Can not access '$name': permission denied"
if [ -z "$cgroup_path" ]; then
echo "no cgroup mount point found"
exit 1 exit 1
fi fi
if [ ! -f $lxcpath/$name/init ]; then pid=$(head -1 $cgroup_path/$name/tasks)
exit 0
if [ -z "$pid" ]; then
echo "no process found for '$name'"
exit 1
fi fi
initpid=$(cat $lxcpath/$name/init) && \ mount --bind /proc/$pid/net /proc/$$/net && \
mount --bind /proc/$initpid/net /proc/$$/net && \
exec netstat $* exec netstat $*
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment