Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use Python variable in bash command with os.system

I would like to enter an phone number with raw_input and use this variable in my bash command for sending a message. I don't know how to set the variable $Phonenumber. Without the RAW Input, it works like a charm. I use Python 2.7.

import os

Phonenumber = raw_input("Number?)

os.system("yowsup-cli demos --login PHONE:PASSWORD= --send '$Phonenumber' 'MESSAGE'")
like image 541
Jesse kraal Avatar asked Sep 17 '25 20:09

Jesse kraal


2 Answers

If you want to stick with using os.system to make your calls, you can just format the command you pass to it:

import os
phone_number = raw_input("Number?")
os.system("yowsup-cli demos --login PHONE:PASSWORD= --send '{0}' 'MESSAGE'".format(phone_number))


However, chepner brings up a good point in his answer. You should really be using the subprocess module for things like this, as it is a much more flexible tool. To get the same behavior using subprocess, just pass a list to subprocess.call with the elements being all the space separated segments of your call:

import subprocess
phone_number = raw_input("Number?")
subprocess.call(["yowsup-cli", "demos", "--login" "PHONE:PASSWORD=", "--send", phone_number, "MESSAGE"])

You can check out more on subprocess here.

like image 190
neatnick Avatar answered Sep 19 '25 09:09

neatnick


Use subprocess instead; among other features, it makes quoting much easier.

import subprocess

phone_number = raw_input("Number?")

subprocess.call(["yowsup-cli", "demos", "--login", "PHONE:PASSWORD=",
                 "--send", phone_number, "MESSAGE"])
like image 24
chepner Avatar answered Sep 19 '25 11:09

chepner