Scripts are the meat and juice of system administrators. Being able to make use of an extensive set of scripts suitable for different tasks is essential for a sysadmin. But how do you actually do the script management?
A number of different elements play a part in doing proper script management.
Most script development starts with a problem that needs urgent solving. You're often given little to no time afterwards to optimize the script. Unfortunately, this can result in scripts that are difficult to reuse in cases where a similar but slightly different problem occurs.
One solution is to separate your problem configuration from the problem-solving logic. This will allow you to reuse your scripts in different environments in the future.
You can accomplish this in Python with separate configuration files. You can parse configuration files with the help of a module called ConfigParser. It's dead simple to use. A sample configuration file looks like this:
You can then use this in your Python scripts.
config = ConfigParser.ConfigParser()
host = config.get('network', 'host')
... continue further action based on host
Structuring your scripts is only one part of the equation. How do you manage them?
Even if you're the only one managing the scripts, it still makes sense to add them to a central version control system. This allows you to review all the changes you made during the lifetime of a script, which gives you the potential to go back to an earlier version if something doesn't work out as expected.
With GitLab you can do Git repository management, code reviews, issue tracking, activity feeds and wikis.
The community edition is free to use, while the enterprise edition requires a paid license.
In order to optimize the performance of your scripts, it's important to pick the right time to start them. For example, it's probably not a good idea to start a large file transfer script if your backup scripts are scheduled to kick in at around the same time. It's also best to postpone large database operations until after business hours. Otherwise, your colleagues using the actual data from the database might come knocking at your door.
To choose the best time to start running your script, you'll need to know when the different schedulers start doing their thing. Avoid disk-intensive scripts when you're doing backups, and avoid number-crunching scripts when a job is running that requires a lot of CPU cycles.
The load (CPU, network, memory) that you put on a system can be measured via different means. A flexible network monitoring tool, for example WhatsUp Gold, provides a graphical overview of the used resources and can raise alarms when something goes beyond the foreseen resource limits.
You can also use verbose output of one of the commands in your script to measure its performance.
As an example, let's focus on the use of rsync within a script. You can use "-v -v" (that's twice the verbose option) to get output on what the rsync command is actually doing and check for errors. But you can also use the verbose output (-v) to check whether the transfer performance is as expected.
rsync -v -r source destination
sent 498 bytes received 174 bytes 448.00 bytes/sec
The "bytes/sec" here is an important indicator of whether your script is running smoothly.
Note: If you're not sure if a problem is caused by disk speed or network latency, you can use iPerf to verify bandwidth loss etc. and possibly exclude the network as a cause.
You can also combine rsync with SSH. It might be a little slower (because of the overhead) but gives you the additional (and in most cases necessary) benefit of secure file transfers. If you are going to use rsync over SSH, then you should definitely consider a public-private key setup. That way you won't have to log in interactively (username/password) each time.
View all posts from Koen Van Impe on the Progress blog. Connect with us about all things application development and deployment, data integration and digital business.
Let our experts teach you how to use Sitefinity's best-in-class features to deliver compelling digital experiences.Learn More
Subscribe to get all the news, info and tutorials you need to build better business apps and sites
You can also ask us not to share your Personal Information to third parties here: Do Not Sell or Share My Info
We see that you have already chosen to receive marketing materials from us. If you wish to change this at any time you may do so by clicking here.
Thank you for your continued interest in Progress. Based on either your previous activity on our websites or our ongoing relationship, we will keep you updated on our products, solutions, services, company news and events. If you decide that you want to be removed from our mailing lists at any time, you can change your contact preferences by clicking here.