Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Locked thread
Dawning Horror
Jun 18, 2009

BoyBlunder posted:

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";

Adbot
ADBOT LOVES YOU

Dawning Horror
Jun 18, 2009

Hughmoris posted:

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.

  • Locked thread