Bonjour,

Via mon script python sous le user root, je dois lancer un script shell qui nécessite le chargement de l'environnement d'un user.
Le user1 a des variables d'environnement qui sont à charger avant le lancement d'un script drop_tables.sh

pour ce faire sous python j'ai fait ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def drop_tables():
    # Voici la ligne de commande que je lance sous user1 en shell
    # drop_tables.sh complet
    str_path_script = '/path/ou/se/situe/le/script/'
    arr_cmd = ['su', '-', 'user1', '\'' + str_path_script + 'drop_tables.sh complet\'']
    str_cmd = ' '.join(arr_cmd)
    print str_cmd
    run_command(arr_cmd)
 
 
def run_command(command):
    process = subprocess.Popen(command, stdout=subprocess.PIPE)
    while True:
        output = process.stdout.readline()
        if output == '' and process.poll() is not None:
            break
        if output:
            print output.strip()
    rc = process.poll()
    return rc
Et j'obtiens ce message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
....
  File "./maj_env.py", line 415, in import_dump
    drop_tables()
  File "./maj_env.py", line 477, in drop_tables
    run_command(arr_cmd)
  File "./maj_env.py", line 481, in run_command
    process = subprocess.Popen(command, stdout=subprocess.PIPE)
  File "/usr/lib64/python2.6/subprocess.py", line 642, in __init__
    errread, errwrite)
  File "/usr/lib64/python2.6/subprocess.py", line 1234, in _execute_child
    raise child_exception
Je sèche ...

Merci de votre aide