- Dawning Horror
- Jun 18, 2009
-
|
I would like a perl script that does the following:
- Determines what version of docker server is running, and prints out 'DOCKERV#', depending on what version it is, e.g DOCKERV1 for v1.19, DOCKERV2, for v2.92, etc. The shell command for this prints the following:
$ docker version
Client:
Version: 1.10.3
API version: 1.22
Go version: go1.5.3
Git commit: 20f81dd
Built: Thu Mar 10 15:54:52 2016
OS/Arch: linux/amd64
Server:
Version: 1.10.3
API version: 1.22
Go version: go1.5.3
Git commit: 20f81dd
Built: Thu Mar 10 15:54:52 2016
OS/Arch: linux/amd64
Where do I begin?
Well, you'd start by getting that output into your perl script, so you'd start with backticks. After that, you'd want a regex to grab the first digits after "Version: " and before the decimal:
code:`docker version` =~ /Version:\s\d/;
But that would capture the Client version first instead, so let's make that more specific by making it match "Server:" on the line before as well:
code:`docker version` =~ /Server:\nVersion:\s\d/
And since docker might live to see version 10 and upwards, let's add a + after the \d so it matches one or more digits. After that, we wrap \d+ in parentheses to store it in $1, which is a builtin variable used to store pattern matches. Then just do a print command and we're done.
code:`docker version` =~ /Server:\nVersion:\s(\d+)/;
print "DOCKERV",$1,"\n";
|
#
¿
Mar 28, 2016 23:37
|
|
- Adbot
-
ADBOT LOVES YOU
|
|
#
¿
May 15, 2024 13:31
|
|
- Dawning Horror
- Jun 18, 2009
-
|
I fiddle with Perl and dabble in Linux. Throwing backticks in front of DOCKER VERSION will essentially run that command in the shell (?) and return its output to the Perl script? Learn something new every day.
Yeah, it's handy for simple things like this when you don't want to remember how open works with commands.
|
#
¿
Mar 29, 2016 05:09
|
|