Altro Bash comandi per programma esterno

Psychonaut

Utente Jade
17 Giugno 2012
1,482
89
733
747
Salve sto provando a cimentarmi con Bash per automatizzare alcune azioni ripetitive, e stavo facendo una prova, allego il codice:

Bash:
#!/bin/bash
clear
echo "this script make you see in which directory are you now"
echo

cd /home/parallels/Documents/OSINT/OSIF

echo "current directory "
pwd
python osif.py


ora il mio problema è che una volta aperto osif.py non so come impartire i comandi all'interno del programma Python, qualche aiuto?
 
Salve sto provando a cimentarmi con Bash per automatizzare alcune azioni ripetitive, e stavo facendo una prova, allego il codice:

Bash:
#!/bin/bash
clear
echo "this script make you see in which directory are you now"
echo

cd /home/parallels/Documents/OSINT/OSIF

echo "current directory "
pwd
python osif.py


ora il mio problema è che una volta aperto osif.py non so come impartire i comandi all'interno del programma Python, qualche aiuto?
Ciò che vuoi fare è già realizzabile dallo script in Python. In ogni caso, ecco una mia soluzione:

Bash:
#!/usr/bin/env bash

python osif.py --path $PWD

Python:
#!/usr/bin/env python3
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--path', help='directory path', type=str)
args = parser.parse_args()
print(args.path)

$PWD è una variable d'ambiente che contiene la current directory.
 
perchè metti echo? nel prompt dei comandi quando avvi lo "script" py come scrivi i comandi ? Devi darle il comando che scriveresti nel prompt
li inserisco normalmente, ho provato come hai detto tu ma non và

Ciò che vuoi fare è già realizzabile dallo script in Python. In ogni caso, ecco una mia soluzione:
Grazie, ma volevo vedere se riuscivo a fare tutto con bash
 
Grazie, ma volevo vedere se riuscivo a fare tutto con bash
Quello che ti ha postato nullptr è corretto e funziona da bash.
Più che altro il secondo script python che esegui lo hai creato tu? Se sì, allora devi modificare lo script affinchè accetti dei parametri in ingresso (argomenti) e, sempre nullptr ti ha fornito un chiaro esempio su come fare uno script python che accetti dei parametri di avvio.
Se lo script non è stato creato da te, devi verificare se già è in grado di ricevere dei parametri in input, altrimenti devi modificare il file con quanto detto sopra...

In ogni caso, se non ti bastasse l'esempio di nullptr puoi sempre cercare in rete la documentazione di argparse
 
Ultima modifica:
Se questo è il contenuto del file esempio.py il quale consente un parametro dell'argomento -s
Python:
import argparse

parser = argparse.ArgumentParser()

parser.add_argument('-s', action='store', dest='valore_semplice',
                    help='Conserva un semplice valore')
results = parser.parse_args()
print ('valore_semplice     =', results.valore_semplice)

ti basta inserire nel tuo file bash la stringa:
python esempio.py -s ciao
Oppure se la path di python è nelle variabili d'ambiente del sistema operativo ti basta scrivere
esempio.py -s ciao

Spero di essere stato chiaro con un esempio piu semplice , anche se gia quello di nullptr è molto chiaro.
Poi al massimo scrivici l'errore che ti da per capire meglio.

In realtà se il file bash è salvato in un percorso diverso da quello dove si trova il file .py ,allora bisogna darle tutta la path(percorso)
c : \ mio_percorso\esempio.py -s ciao
o meglio ancora ti salvi il percorso su una variabile
PERCORSO=/home/parallels/Documents/OSINT/OSIF
$PERCORSO/esempio.py -s ciao
oppure
python $PERCORSO/esempio.py -s ciao
E ti eviti il cd e pwd .A proposito ! Il pwd ti risponde la path corretta quando lanci lo script?

Modifica dopo prove:
Facendo delle prove di quello che vuoi fare te con il tuo stesso codice "modificando solo il contenuto del file PY" funziona tutto (essendo in windows ho dovuto usufruire di un servizio IDE bash OnLine)
1598177960495.png

come vedi il risultato sulla destra è chiaro
 
Ultima modifica:
python $PERCORSO/esempio.py -s ciao
E ti eviti il cd e pwd .A proposito ! Il pwd ti risponde la path corretta quando lanci lo script?
Certo, altrimenti non mi lancerebbe osif.py, quindi se non modifico lo script py non ci sono modi di fare accettare dei parametri direttamente da bash?
Messaggio unito automaticamente:

Lo script in py non l'ho fatto io, nel caso dovrei scrivere tanti parametri di argomento, per tutti i comandi che voglio utilizzare tramite bash?
Messaggio unito automaticamente:

Quello che ti ha postato nullptr è corretto e funziona da bash.
intendevo senza dover modificare lo script in Python, se voglio automatizzare programmi come LibreOffice che faccio? devo modificare lo script anche li ????
 
non dà nessun errore il mio script, è solo che apre il programma in Python e da lì in poi non riesco a dargli i comandi, e volevo capire se ci sono modi per farlo esclusivamente da bash, tutto qui
 
intendevo senza dover modificare lo script in Python, se voglio automatizzare programmi come LibreOffice che faccio? devo modificare lo script anche li ????
Si, perchè essenzialmente negli script che accettano parametri di avvio li gestiscono tramite argparse per impostare determinate variabili che poi verranno valutate durante l'esecuzione del codice.

Per quanto riguarda LibreOffice, controlla che non ci siano già della API per l'automazione...
 
  • Mi piace
Reazioni: Psychonaut
Ultima modifica:
Il problema e che tu voi passare degli argomenti a uno script che non li prevede , l'unica via che hai per fare cio è di modificare il file osif.py inserendogli tutti i parametri che altrimenti dovresti eseguire a manina una volta lanciato il programma .Non so se mi sono fatto comprendere , in tal caso chiedi pure.
Messaggio unito automaticamente:

Poi come dice giustamente DidyMond potresti usufruire di qualche servizio API ,ma in quel caso dovrai scrivere tu qualcosa in python o altro linguaggio . per quanto riguarda il bash le opzioni sono un po' limitanti anche dalla documentazione ufficiale di LibreOffice.
Ogni software di solito ha la sua
 
Grazie, ma volevo vedere se riuscivo a fare tutto con bash
La domanda non è abbastanza chiara: vorresti creare uno script in Bash che recepisca dei parametri o (ottemperando alla domanda del tuo primo post) creare un comando in Bash che lanci uno script in Python che a sua volta recepisca dei parametri? Se la domanda è l'ultima ti ho già risposto a sufficienza, diversamente scrivere uno script in Bash che accetti degli argomenti è un altro par di maniche.
Nell'insieme hai chiesto come creare uno script in Python che accetti degli argomenti, laddove avresti potuto lanciarlo per mezzo della tua shell interattivamente e con tanta semplicità:
Bash:
~ $ python osif.py --path $PWD

Ma a mio giudizio non ha molto senso ciò che stai facendo.
 
Probabilmente mi sono spiegato male io.
Ripeto:
La questione è che vorrei creare uno script in bash per automatizzare alcuni meccanismi, in questo caso (lascia perdere PWD, è uno script di prova quello che ho inserito) voglio che, tramite lo script in bash, venga aperto un programma in Python, e che dopo l'apertura vengano eseguiti dei comandi, passati sempre tramite lo script.sh, senza modificare altri eventuali script .py, è possibile?
Spero sia più chiara ora come domanda.

Se la risposta è "no devi per forza modificare lo script.py" ho recepito
 
@Psychonaut, avevo già capito che fosse uno script di prova quello del pwd, stavo considerando poco sensata l'idea in generale di utilizzare due linguaggi di programmazione quando in realtà te ne basta uno.
Praticamente dallo script in Bash attraverso la variabile d'ambiente $PWD pigli il percorso della directory corrente e la passi allo script in Python come argomento per fargliela stampare.

Non credo che saresti l'uomo più furbo del mondo se per cuocere 100g di pasta utilizzassi due pentole, mettendogli 50g l'una. Piuttosto ne utilizzi una sola, alla giusta capacità. Fai tutto in Bash o in Python, e rendi le cose meno complicate.

voglio che, tramite lo script in bash, venga aperto un programma in Python, e che dopo l'apertura vengano eseguiti dei comandi, passati sempre tramite lo script.sh, senza modificare altri eventuali script .py, è possibile?
Lo script non può mica programmarsi da solo.