Help with writing Shell Script to automate process using multiple commands

Hello!

Need help to write a Linux script that can be run from windows using command/Cygwin/any other way. I am new to scripting, actually i am trying to automate server health check like free disk space, memory along with few services status, if any services is not running then start services , clear logs to resolve disk space issue. Script should store default user cgriffin with predefined password. fist check for 7 services then free disk space . If all services running then look for free disk space(if any service is not running then fnd out service whic is not running). Attached are commands thatw e manually run. Anybody who can help to automate this using shell script run using windows machine? Kindly help me

First of all: Learn to Script

Above all I suggest you 2-3 tutorials in Shell-Scripting, so you get familiar with the necessary environment in order to be able to write the scripts, which are executing the necessary actions.

Here are some hints for an easy start:

Don't reinvent the wheel - use a monitoring system

My first thought is, that on every linux server that is managed this way a monitoring should be installed. This monitoring is configured for the relevant paramaters that your task needs. And if one the parameters is bad an action(e. g. a little script) should be executed, which fixes the situation.

Of course you do not need a monitoring system at all. You can script all the way through with your own scripts. But if you use a monitoring system it will be far more stable and feature rich than your own code, especially as you are now at the beginning to learn scripting.

The windows machine is of no use here - imho - because monitoring is nothing which must be started on demand. Monitoring is running always.

All major monitoring systems - by design big software packages to monitor many servers - can initiate custom actions on flexible defined failed checks. But those systems are very feature rich and so you need your time to get familiar with it and to learn how to use them. Pure Nagios is feared for its hell of config files.

Monit - a simple monitoring utility

A monitoring system which is far simpler than the other heavywheights is Monit and specially designed for simple monitoring and actions. I could imagine, that this would be the tool, that helps you most with your current task.

Check_MK

Personally I'm using check_mk - a full featured monitoring suite based on Nagios. I like it very much. And I recommend it if you have at least about 20-30 servers or more to monitor in detail - but of course "Server Monitoring" in whole is not your task. And of course I'm triggering a bunch of maintenance actions to fix various server problems.

Use an existing monitoring system?

Maybe your environment has already a monitoring suite( I suppose not ), which you can use to trigger the needed actions? Ask your colleagues!

Update-1

Maybe some simple cronjobs run once a day or once a week can help you too.

1 Like

I'm pretty sure that people participate in here "who can help to automate" although mayhap NOT with windows machines. Still I doubt they want to infer the bits and pieces from a rough and ready log of what is normally done manually.

Please take the trouble to prepare a correct specification, defining a (or multiple?) precise target(s), show the underlying basic data, structures, and OS/tools, possible restrictions, and your own ideas how to connect the two.

Hi Stomp, first of all i need to say is appreciate your quick reply.Than You.

Sure! I will try to use Monit and Check_MK both

We already have zabbix monitoring tool for all server in our datacenter, these servers what i am trying to automate health check are staging servers where our product will be tested before deploying to production environment, some time while testing Dev team may get errors due to stopped services, low disk space etc so that time they will contact IT to look into issue and resolve. For now we manually doing this Job as IT admin, i am trying to automate this work to make less effort to resolve the issue. These servers are in near 50-60 Cnetos 5.8 servers running squid, puppet for other our product testing reasons.

like i have wrote a powershell script, when i run script it prompts for server name (manually need to eneter) then it automatically display free disk space, CPU usage , memory usage ect in browser in some specific format. It reduces manually logging to server and checking everything one by one. Same way in need to do for linux server.

Anyway will try to implement Monit and Check_MK right away and let you know the result meanwhile after more explanation about my requirement if you have any other solution then please share with me.

Thanks

Isn't it much easier to add them to zabbix and set a service outage or a special notification group?

Yes. I recommend too to use zabbix. You may get help from your colleagues, which have already probably good knowledge handling it. Using zabbix now helps you to work with it with your production servers too. And at least no one would like to have the complexity multiple different monitoring systems if there's no need for it.

Maybe it's a good option to set up a zabbix instance for your own. So you do not kill the production monitoring system if configuration errors occur. If you get all up and running at your test site, you may migrate your rules from test to production monitoring system.

OK will try to setup Zabbix, if i need help then will Reply to thread. Stomp or anyone else If good in zabbix then please help.

Thanks everyone for your suggestions!

---------- Post updated at 03:53 PM ---------- Previous update was at 03:02 PM ----------

Those staging servers are already available/configured in Zabbix server (CPU,Disks,Filesystem, Memory). But for services there is no configuration like squid, puppet etc also from zabbix alerts we will only come to know the problem then again we need to login to the server to fix the issue. What i am looking for is just login to server for which issue is reported and run a script that automatically check for 7 services status, if any one is down then prompt for restart, else next step check free disk space if space is less then there is command to check top 50 folders using space run that and see in that folder if any of 7 services logs folder are listed if yes then go to every logs run command delete it finally end the script. Is possible to write such script ? please help

---------- Post updated at 03:56 PM ---------- Previous update was at 03:53 PM ----------

please refer attached file for commands/services that we use to do logs cleanup(Automate Linux Commands)

Hi Sayed,

sorry, but I have almost no knowledge about zabbix beside the fact that I read some news articles about it here and then. Zabbix is a good open source monitoring solution with fine documentation, that'll help you a lot.

Regarding questioning: In this forum there is a monitoring section as well. Another good place is ...

... the Zabbix-Forum:
ZABBIX Forums