Skip to main content

[python] get string from output of other process

1. The Script
----------------------------------
#!/usr/bin/python
import subprocess

def getCallResult(cmdARGS):
  fd_popen = subprocess.Popen(cmdARGS.split(), stdout=subprocess.PIPE).stdout
  data = fd_popen.read().strip()
  fd_popen.close()
  return data

data = getCallResult("ls -la")
print (data)
----------------------------------

2. Result Example
----------------------------------
# python test.py
total 524
drwxrwxr-x  4 parkmo parkmo   4096  1월 27 16:30 .
drwxrwxr-x 45 parkmo parkmo   4096  1월 27 11:59 ..
drw-rw-r--  1 parkmo parkmo    421  1월 27 12:01 test.py
..
..


1) If you don't want use split() when call subprocess.Popen, use [ ].
subprocess.Popen(["ls", "-la"], stdout=subprocess.PIPE).stdout

2) If you can want to file descriptor.
  fd_popen = subprocess.Popen(cmdARGS.split(), stdout=subprocess.PIPE).wait()

You can use Blocking or Non-Blocking.

Test Environment: Python 2.4.x
Caution: On Python 3.x, when you want to use print function, you can not use print. You must write "print(....)"

Comments

Popular posts from this blog

Redmine production.log to uri log

But.. It doesn't work well. (Because the sequence of line is not arranged.) It is better way to use ' redmine_access_logger' plugin than this #!/bin/bash # Setting LOG_FILE=/redmine-3.3.3/log/production.log #LOG_FILE=mylog.log PIDFILE=/var/run/redmine_info_log.pid # Program Variables OUTPUT_LOGDIR=`dirname ${LOG_FILE}` OPT_DEBUG=0 URI_FILTER_REGEX="(^\"/people/avatar)|(^/attachments/thumbnail/)|(^\"/issues/.*\.xml)" function echo_log() { if [ "$2" != "" ]; then echo "$1" >> $2 else echo "$1" fi } if [ -f $PIDFILE ] then PID=$(cat $PIDFILE) ps -p $PID > /dev/null 2>&1 if [ $? -eq 0 ] then echo "Process already running" exit 1 else ## Process not found assume not running echo $$ > $PIDFILE if [ $? -ne 0 ] then echo "Could not create PID file" exit 1 fi fi else echo $$ > $PIDFILE if [ $? -ne 0 ]

[docker/redmine] run redmine with sqlite3 in docker

Basic Rule:  I want to use "/home2/home/redmine" directory for redmine DB.  I want to use sqlite3 for redmine. 1. in host side  # adduser redmine 2. in host side. (go into dockers container for copying base files to host)  # docker run -it -v /home2/home/redmine/:/usr/src/redmine/HOST --name redmine -p 80:3000 redmine bash 2-1. in redmine container of docker : work dir is /usr/src/redmine  # cp -a config HOST/  # cp -a db HOST/  # exit 2-2. in host side : remove all docker contatiners  # docker rm $(docker ps -a -q) 2-3. in host side : chown directories.  # cd /home2/home/redmine  # chown redmine.redmine . -R 3. edit "/home2/home/redmine/config/database.yml" production:   adapter: sqlite3   database: sqlite/redmine.db   host: localhost 4. Run Redmine with daemonized.  # docker run -d -v /etc/passwd:/etc/passwd:ro -v /home2/home/redmine/DB:/usr/src/redmine/sqlite -v /home2/home/redmine/config:/usr/src/redmine/config -v /home2/home/redmin

[WordPress] Change https redirect in DB.

If you make an https redirect without thinking about SSL configuration: Check DB SELECT * from wp_options where option_name IN ('siteurl', 'home'); Update UPDATE wp_options SET option_value = REPLACE(option_value, 'https://your_domain', 'http://your_domain') WHERE option_name IN ('siteurl', 'home');