[CentOS] virtdown script

Tue May 3 21:05:33 UTC 2011
Ljubomir Ljubojevic <office at plnet.rs>

Chris Geldenhuis wrote:
> Ljubomir Ljubojevic wrote:
>> Tim Dunphy wrote:
>>   
>>> hello list!
>>>
>>> I have a small shell script that I wrote that is meant to quickly bring down all of my xen instances in a quick and easy manner. Odd thing is, it does work on the command line. But if I put it into a script this happens:
>>>
>>>
>>> [root at LCENT03:/home/bluethundr/bin] #virtdown
>>>
>>> it expects another command to happen. which is odd since all of the text delimiters (" and ') are balanced according to vim. I was wondering if I could have an opinion on why this might be happening. Here's the script:
>>>
>>>
>>>
>>> #/bin/bash
>>>
>>> for i in $(virsh list | grep -v -e Id -e --- -e Domain-0 | awk '{print $1}');
>>> do
>>> /usr/bin/virsh shutdown $i
>>> done
>>>
>>>
>>> thanks in advance!
>>> tim
>>>     
>> Last thing I saw is "#/bin/bash" instead of "#!/bin/bash". Fix and try.
>>
>> The rest of suggestions:
>> Add plenty of unique "echo" lines so you can see where it brakes.
>>
>> Also try $(`virsh list | grep -v -e Id -e --- -e Domain-0 | awk '{print 
>> $1}'`)
>>
>> and try sending that same part to variable first and echo the variable 
>> so you can see output.
>>
>>
>> #!/bin/bash
>>
>> list=$(virsh list | grep -v -e Id -e --- -e Domain-0 | awk '{print $1}')
>> echo "the list is=$list"; sleep 2
>> for i in "$list";
>> do
>>     echo "Running shutdown for item $i"; sleep 2
>>     /usr/bin/virsh shutdown $i
>>     echo " shutdown for item $i is complete"; sleep 2
>> done
>>
>> and try version with:
>> list=$(`virsh list | grep -v -e Id -e --- -e Domain-0 | awk '{print $1}'`)
>>
>> Ljubomir
>> _______________________________________________
>> CentOS mailing list
>> CentOS at centos.org
>> http://lists.centos.org/mailman/listinfo/centos
>>
>>   
> In cases like this it is also useful to put in a line "set -x" early on 
> in the script. It will then output every stage as it parses each command 
> allowing you to see where the resulys are not as expected.
> 
> ChrisG

Yes, you are right. I totally forgot about that. Another way is
"bash -x <script name>" to set it to debug mode without editing it.

Ljubomir