我有一個bash腳本從Heroku獲取信息,以便我可以將我的數據庫的一個副本。該腳本在cygwin中正常工作。但是在cron中運行它會停止,因爲它使用的shell通過Heroku Toolbelt作爲Heroku的身份驗證暫停。期望失敗,但我不明白爲什麼
這裏是我的crontab:
SHELL=/usr/bin/bash
5 8-18 * * 1-5 /cygdrive/c/Users/sam/work/push_db.sh >>/cygdrive/c/Users/sam/work/output.txt
我已經閱讀了谷歌和Cygwin中的手冊頁想出這個加法:
#!/usr/bin/bash
. /home/sam.walton/.profile
echo $SHELL
curl -H "Accept: application/vnd.heroku+json; version=3" -n https://api.heroku.com/
#. $HOME/.bash_profile
echo `heroku.bat pgbackups:capture --expire`
#spawn heroku.bat pgbackups:capture --expire
expect {
"Email:" { send -- "$($HEROKU_LOGIN)\r"}
"Password (typing will be hidden):" { send -- "$HEROKU_PW\r" }
timeout { echo "timed out during login"; exit 1 }
}
sleep 2
echo "first"
curl -o latest.dump -L "$(heroku.bat pgbackups:url | dos2unix)"
下面是從output.txt的
輸出/usr/bin/bash
{
"links":[
{
"rel":"schema",
"href":"https://api.heroku.com/schema"
}
]
}
Enter your Heroku credentials. Email: Password (typing will be hidden): Authentication failed. Enter your Heroku credentials. Email: Password (typing will be hidden): Authentication failed. Enter your Heroku credentials. Email: Password (typing will be hidden): Authentication failed.
正如你所看到的,看起來輸出沒有得到send命令的結果,因爲它是ap梨正在等待。我已經完成了許多有關證書和期望陳述的實驗。一切都停在這裏。我看過幾個例子,並試圖嘗試這些,但我得到模糊的眼睛,這就是爲什麼我在這裏發佈。我不瞭解什麼?
感謝您的意見,我想起明確地把我的ENV變量在.bashrc中:每@迪內希的很好的例子是低於
[[ -s $USERPROFILE/.pik/.pikrc ]] && source "$USERPROFILE/.pik/.pikrc"
export HEROKU_LOGIN=myEmailHere
export HEROKU_PW=myPWhere
我的修訂後的腳本:
. /home/sam.walton/.bashrc echo $SHELL echo $HEROKU_LOGIN curl -H "Accept: application/vnd.heroku+json; version=3" -n https://api.heroku.com/
expect -d -c " spawn heroku.bat pgbackups:capture --expire --app gw-inspector expect {
"Email:" { send -- "myEmailHere\r"; exp_continue}
"Password (typing will be hidden):" { send -- "myPWhere\r" }
timeout { puts "timed out during login"; exit 1 } } " sleep 2 echo "first"
這應該工作但儘管變量的回顯失敗,給我提供了一個線索,說明該變量沒有被調用,但我正在測試直接對變量進行硬編碼以將其作爲變量消除。但正如你可以通過我的輸出所看到的那樣,不僅回聲沒有產生任何效果,也沒有任何線索表明任何診斷正在通過,這讓我懷疑腳本是否被稱爲從期望運行,以及產生的結果命令。重申一下,heroku.bat命令在預期關閉之外工作,但結果在上面。直接在上面的命令的結果是:
/usr/bin/bash
{
"links":[
{
"rel":"schema",
"href":"https://api.heroku.com/schema"
}
]
}
我做錯了什麼,會告訴我診斷說明?
'HEROKU_LOGIN'和'HEROKU_PW'是否是'.bashrc'文件中聲明的環境變量? – Dinesh 2014-10-10 08:38:34