bashスクリプト内にpythonスクリプトを含める必要があります。
Bashスクリプトが成功した場合、以下のスクリプトを実行する必要があります。
#!/usr/bin/python
from smtplib import SMTP
import datetime
debuglevel = 0
smtp = SMTP()
smtp.set_debuglevel(debuglevel)
smtp.connect('192.168.75.1', 25)
smtp.login('my_mail', 'mail_passwd')
from_addr = "My Name <[email protected]>"
to_addr = "<[email protected]"
subj = "Process completed"
date = datetime.datetime.now().strftime( "%d/%m/%Y %H:%M" )
#print (date)
message_text = "Hai..\n\nThe process completed."
msg = "From: %s\nTo: %s\nSubject: %s\nDate: %s\n\n%s" % ( from_addr, to_addr, subj, date, message_text )
smtp.sendmail(from_addr, to_addr, msg)
smtp.quit()
Bashとpythonスクリプトの両方のソースを保持したい場合は、ヒアドキュメントを使用できます。たとえば、pyinbash.sh
というファイルの内容が次のようであるとします。
#!/bin/bash
echo "Executing a bash statement"
export bashvar=100
cat << EOF > pyscript.py
#!/usr/bin/python
import subprocess
print 'Hello python'
subprocess.call(["echo","$bashvar"])
EOF
chmod 755 pyscript.py
./pyscript.py
pyinbash.sh
を実行すると、次の結果が得られます。
$ chmod 755 pyinbash.sh
$ ./pyinbash.sh
Exe
HereDocをpython -
に渡すだけです。
python help python -h
から:
- : program read from stdin
#!/bin/bash
MYSTRING="Do something in bash"
echo $MYSTRING
python - << EOF
myPyString = "Do something on python"
print myPyString
EOF
echo "Back to bash"
最も簡単な方法は、pythonスクリプトをscript.py
などとして保存し、bashスクリプトから呼び出すか、afterを呼び出すことです。 bashスクリプト:
#!/usr/bin/env bash
echo "This is the bash script" &&
/path/to/script.py
または
script.sh && script.py
例としてこれについては:
PYTHON_BIN=/usr/bin/python
if [ -x $PYTHON_BIN ]; then
$PYTHON_BIN -c "print 'Hello, world'"
else
echo 'Hello, world'
fi
VS
$ ./foobar.py
env: python: No such file or directory