Script to find Error: rpmdb open failed on list of servers


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Script to find Error: rpmdb open failed on list of servers
# 1  
Old 06-20-2019
Script to find Error: rpmdb open failed on list of servers

Hello all,

I have a task to patch red hat servers and some servers have a corrupted rpm database and return the error:

Error: rpmdb open failed

I know how to fix this when it occurs. What I'm hoping to do is scan a list of servers by IP and report back which server have this error.

Would someone be able to assist or point me in the right direction on how I capture this? My thought is to run the following:

Code:
sudo yum update infolist

On each server and capture the output to find the error.

Thanks in advance for any assistance or pointers you can provide me.
# 2  
Old 06-20-2019
Are you considering to run your "status checking" script in cron?
# 3  
Old 06-21-2019
You can use a for loop and process substitution and some descriptor magic:
Code:
#!/bin/bash
for server in server1 server2
do
  ssh -x "$server" '
    echo "hello I am on `hostname`"
    sudo yum update infolist
  ' 2> >(sed "s/^/$server: /" >&3)
done 3>stderr

The stderr output goes to the file stderr, filtered by sed.
The sed prepends $server: to every stderr line. It can also prepend it once:
Code:
for server in server1 server2
do
  ssh -x "$server" '
    echo "hello I am on `hostname`"
    sudo yum update infolist
  ' 2> >(sed "1i\\
$server:" >&3)
done 3>stderr

# 4  
Old 06-22-2019
Hello @MadeInGermany and @Neo,

Thanks very much for your replies.

My intention is not to use this in a cronjob.

The script that MadeInGermany is what I was looking for. When I run these scripts I receive the following errors:

First Script Error:
Code:
 
checkyum.sh: line 7: syntax error near unexpected token `>'
checkyum.sh: line 7: `  ' 2> >(sed "s/^/$server: /" >&3)'


Second Script Error:
Code:
 
checkyum.sh: line 7: syntax error near unexpected token `('
checkyum.sh: line 7: `  ' 2>>(sed "1i\\'

My BashFu is pretty weak. Would you be able to point out what I need to change to get this working?

thank you.
# 5  
Old 06-22-2019
For using the <( ) and >( ) process substitution, the OS must support Unix devices, and bash must be compiled to utilize it.
Obviously not true for your OS and bash.?
Code:
uname -sr
bash --version

The following pipes stderr (descriptor 2) to sed. But a pipe works with stdout (descriptor 1) only. Therfore, it swaps stdin and stdout before the pipe, and afterwards swaps them back.
Code:
#!/bin/bash
for server in server1 server2
do
  {
  ssh -x "$server" '
    echo "hello I am on `hostname`"
    sudo yum update infolist
  '  3>&2 2>&1 1>&3 | sed "s/^/$server: /" 
  } 3>&2 2>&1 1>&3
done 2>stderr

# 6  
Old 09-12-2019
Hello @MadeInGermany,

Apologies for not responding sooner to your helpful reply.

Here are some details of the Red Hat server I'm using:
Code:
$ uname -sr
Linux 3.10.0-1062.el7.x86_64

Code:
$ bash --version
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)

I'm trying my hand at this script again. I've used your suggestion:
Code:
#!/bin/bash
for server in server1 server2
do
  ssh -x "$server" '
    echo "hello I am on `hostname`"
    sudo yum update infolist
  ' 2> >(sed "1i\\
$server:" >&3)
done 3>stderr

I can successfully login to a server and I receive the echo that says "hello I am on 'hostname'" so the script is working and gives me this detail back. But I don't receive any other data back after running this script against my test server? Would this be the result if rpmdb open failed wasn't occuring on this test server? What I mean is...will the above script only show if rpmdb open failed exists and if it doesn't the script returns nothing back?

Thank you.

Moderator's Comments:
Mod Comment
Code tags please

Last edited by Peasant; 09-12-2019 at 04:38 AM.. Reason: Added code tags.
# 7  
Old 09-14-2019
Here is an example of what I'm trying to do. If someone can help me formulate this line properly to get what I need please:

Code:
Code:
sudo yum repolist | grep -qi 'Error: rpmdb open failed ' ; case "$?" in "0") echo "Match" ;; "1") echo "No Match" ;; *) echo "Error" ;; esac

I would like to use a one line command so use it in a bash script along with other checks I do.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Linux open failed: No such file or directory error

Hi, The below commands works fine on serverB . /etc/profile; cd /export/home/user2/utils/plugin/ ./runme.shHowever, when i run the same commands from serverA it fails $ ssh -q user2@serverB ". /etc/profile; cd /export/home/user2/utils/plugin; ./runme.sh"Output Error: Please find the below... (8 Replies)
Discussion started by: mohtashims
8 Replies

2. UNIX for Beginners Questions & Answers

Rdesktop - ERROR: Failed to open keymap en-us

I just updated my rdesktop to 1.8.3 from source ( on Slackware 11 ) and had troubles with arrow keys/page up/page down not working. I see this on the console: ERROR: Failed to open keymap en-us The fix is a permission change. I initially looked at /usr/share/rdesktop/keymaps and everything... (1 Reply)
Discussion started by: agentrnge
1 Replies

3. Shell Programming and Scripting

How to find out list of all proccess which are running on unix servers from last two days.

Hi All, I have a requirment, i need to get the list of all the process which are running from last two days on my unix server and also to put this list into an another file. i am giving you a sample example : $ ps -ef UID PID PPID C STIME TTY TIME CMD (1 Reply)
Discussion started by: akshu.agni
1 Replies

4. Red Hat

rpmdb open failed

Hi, # yum --skip-broken -y update rpmdb: Thread/process 6657/3078387392 failed: Thread died in Berkeley DB library error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery error: cannot open Packages index using db3 - (-30974) error: cannot open... (3 Replies)
Discussion started by: sef alislam
3 Replies

5. UNIX for Dummies Questions & Answers

NDM: Source file open failed. Error= 2

Hi, I have try to ndm to one server to another server. but i am getting this error. what is this error? are files not in source folder? Source file open failed. Error= 2 Regards, Balamurgan (1 Reply)
Discussion started by: krbala1985
1 Replies

6. Solaris

Error- ld.so.1: expr: fatal: libgmp.so.3: open failed:No such file or directory

Hi Friends I have a compiler(Sun Forte,I believe) running in my Solaris 9 box. since y'day my development team is finding this error when they compile: ld.so.1: expr: fatal: libgmp.so.3: open failed: No such file or directory I ran a search for this file and found it in one of my file... (2 Replies)
Discussion started by: Hari_Ganesh
2 Replies

7. Solaris

Error:: libm.so.2:open failed

Hi, I am working with solaris 9 and I want to install perforce on that,so I downloaded the p4v.bin file and try to install it by the command ./p4v after that it is giving the error--- ld.so.1: ./p4v.bin: fatal: libm.so.2: open failed: No such file or directory Killed I am not... (3 Replies)
Discussion started by: smartgupta
3 Replies

8. Shell Programming and Scripting

Telnet script to test open ports on mult servers

Hello All, Can somebody help me with this script. I have an output file with a list of servers ips and ports. I need to be able to run this script to list all the server ips in the outfile and find out if the port is open or not. #!/bin/sh IFS=#;for i in $(cat portTest); do # check... (2 Replies)
Discussion started by: liketheshell
2 Replies

9. Shell Programming and Scripting

Script Error: 13192.sumr: 0403-016 Cannot find or open the file.

Hello, i am familiar enough with unix to do some damage but thats about it. We have a set of RS/6000 43P Model 150's running AIX for our Catia V4 programmers. back in the 90's a script was written to automate the conversion of files into machine code. that script has started giving us... (0 Replies)
Discussion started by: jgruenwald
0 Replies

10. Shell Programming and Scripting

Failed to open output file Error

Hi guys, I Have written a script,In that it will call another file which contains the sql quaries. while wxecuting that I am getting the below exception 01/16|06:28:06:16800: Operating System Error|Failed to open output file Can anybody help me about this,,Its urgent (0 Replies)
Discussion started by: Anji
0 Replies
Login or Register to Ask a Question