2016-03-05 24 views
0

我開始寫一些pyhton編碼,以啓動新的服務器/ VM(S)與代理服務器(py2.7)長的「回聲」通過子

這一直沒有工作,由於語法錯誤

subprocess.call("echo 'http_proxy="http://proxy.srx.com:80/" \nhttps_proxy="http://proxy.srx.com:80/" \nno_proxy="127.0.0.1, localhost, *.internaldns.com, 172.27.255.88, 172.27.255.89" ' >> /etc/environment ", shell=True); 

所以我試圖將\ n爲進

#!/usr/bin/python 

import os; 
import subprocess; 

subprocess.call(["ls", "/etc/"]); 

print "=====Next Command====="; 

print "echo to environment"; 

subprocess.call("echo "http_proxy="http://proxy.srx.com:80/"" >> /etc/environment", shell=True); 
subprocess.call("echo "https_proxy="http://proxy.srx.com:80/"" >> /etc/environment", shell=True); 
subprocess.call("echo "no_proxy="127.0.0.1, localhost, *.internaldns.com, 172.27.255.88, 172.27.255.89"" >> /etc/environment", shell=True); 


print "=====Next Command====="; 
subprocess.call("ls /root/", shell=True); 

#if CentOS yum.conf 

#if Ubuntu apt.conf 
~      

但還是這個語法錯誤?

~# ./sys.py 
    File "./sys.py", line 12 
    subprocess.call("echo "http_proxy="http://proxy.srx.com:80/"" >> /etc/environment", shell=True); 
            ^
SyntaxError: invalid syntax 

謝謝! 。 我試過的許多組合「和」,但沒有運氣

+1

你試圖使用相同的當然,如果你不用'shell = True'來使用'基於'str'的命令,那麼這將變得容易很多;''list'基於命令使得需要內部引用的頻率要低得多,或者在這種特殊情況下,跳過沒有意義的'subprocess'用法,而只是'打開'文件和'print' /'write'ing它直接。 ('/ etc/environment','a')作爲env:',然後在'env.write('http_proxy =「http://proxy.srx.com:80/」\ n')塊中' – ShadowRanger

+1

不相關:不要將您的Python腳本命名爲標準的Python模塊,比如'sys'。否則,可能會發生意外錯誤,[example1](http://stackoverflow.com/q/25299371/4279),[example2](http://stackoverflow.com/q/27702506/4279),[example3](http ://stackoverflow.com/q/28066014/4279),[example4](http://stackoverflow.com/q/27714497/4279)等。 – jfs

+0

@JF塞巴斯蒂安哦哇,我不知道。謝謝。 – SndLt

回答

0

問題是"echo "http_proxy="http://proxy.srx.com:80/""...是不是一個有效的字符串

你應該使用:

subprocess.call("""echo "http_proxy="http://proxy.srx.com:80/"" >> /etc/environment""", shell=True); 
+0

subprocess.call(「」「echo」http_proxy =「http://proxy.srx.com:80/」\ nhttps_proxy =「http://proxy.srx.com:80/」「>>/etc/environment 「」「,shell = True); (現在我換成那個謝謝了!!) – SndLt

+0

@SndLt:是否有任何理由不在這裏使用純Python:'用open('/ etc/environment','a')作爲f:print >> f,' HTTP_PROXY = HTTP://proxy.srx.com:80 /''? – jfs

+0

將在Python中執行整個bash炮擊任務。 (只是試圖去適應它)這是你會推薦什麼常規的CentOS/Ubuntu雜事?再次感謝 – SndLt