Blob Blame History Raw
diff -up sos-3.0/sos/plugins/postgresql.py.orig sos-3.0/sos/plugins/postgresql.py
--- sos-3.0/sos/plugins/postgresql.py.orig	2014-11-11 17:22:24.973592961 +0000
+++ sos-3.0/sos/plugins/postgresql.py	2014-11-11 17:29:02.374434446 +0000
@@ -13,23 +13,27 @@ class PostgreSQL(Plugin):
 
     tmp_dir = None
 
+    password_warn_text = " (password visible in process listings)"
+
     option_list = [
         ("pghome",  'PostgreSQL server home directory.', '', '/var/lib/pgsql'),
         ("username",  'username for pg_dump', '', 'postgres'),
-        ("password",  'password for pg_dump', '', ''),
-        ("dbname",  'database name to dump for pg_dump', '', ''),
+        ('password', 'password for pg_dump' + password_warn_text, '', ''),
+        ("dbname",  'database name to dump for pg_dump', '', '')
     ]
 
     def pg_dump(self):
         dest_file = os.path.join(self.tmp_dir, "sos_pgdump.tar")
-        old_env_pgpassword = os.environ.get("PGPASSWORD")
-        os.environ["PGPASSWORD"] = self.get_option("password")
+        # We're only modifying this for ourself and our children so there
+        # is no need to save and restore environment variables if the user
+        # decided to pass the password on the command line.
+        if self.get_option("password") is not None:
+            os.environ["PGPASSWORD"] = self.get_option("password")
+
         (status, output, rtime) = self.call_ext_prog("pg_dump %s -U %s -w -f %s -F t" %
                                                    (self.get_option("dbname"),
                                                     self.get_option("username"),
                                                     dest_file))
-        if old_env_pgpassword is not None:
-            os.environ["PGPASSWORD"] = old_env_pgpassword
         if (status == 0):
             self.add_copy_spec(dest_file)
         else:
@@ -37,7 +41,7 @@ class PostgreSQL(Plugin):
 
     def setup(self):
         if self.get_option("dbname"):
-            if self.get_option("password"):
+            if self.get_option("password") or "PGPASSWORD" in os.environ:
                 self.tmp_dir = tempfile.mkdtemp()
                 self.pg_dump()
             else: