banning in one line command

Dridi Boukelmoune dridi at varni.sh
Wed Feb 1 16:25:12 CET 2017


On Wed, Feb 1, 2017 at 3:31 PM, Miguel González
<miguel_3_gonzalez at yahoo.es> wrote:
> Dear all,
>
>   I have Varnish 4.1 and I´m trying to run in one single line command a
> ban for a particular website. If I run this:
>
>   root at myserver [~] # varnishadm -T :6082 -S /etc/varnish/secret
>
>   varnish> ban req.http.host ~ www.myserver.com
>   200
>
>    I get the 200 code. However If I run it in a single line I get no 200
> return code:
>
>   root at myserver [~] # varnishadm -T :6082 -S /etc/varnish/secret 'ban
> req.http.host ~ www.myserver.com'

You probably don't need the -T arg for a local access.

>   I get nothing. If I try double quotes I get the same...
>
>   I googled around and I find people asking the same but no solutions.
>
>   What am I doing wrong?

Nothing wrong: what you are seeing in varnishadm's interactive shell
is the response status from varnish (see man varnish-cli) but when you
use varnishadm as a scripting command, only the actual output is
shown.

Instead of relying on the status code of the varnish-cli command, use
the exit status of the varnishadm command.

if ! varnishadm [...]
then
    echo "varnishadm just failed" >&2
    exit 42
fi

Dridi



More information about the varnish-misc mailing list