![](/img/trans.png)
[英]In Bash script trying to pass local variable to SSH and then execute the other commands
[英]bash script execute commands after ssh
我正在嘗試通過我的第一個腳本執行一些命令,但它不起作用。
#!/bin/bash
#connect to server
echo "Connecting to the server..."
ssh -t root@IP '
#switch user to deploy
su - deploy
#switch path
echo "Switching the path"
cd /var/www/deploys/bin/app/config
#run deploy script
echo "Running deploy script"
/usr/local/bin/cap -S env=prod deploy
#restart apache
sudo /bin/systemctl restart httpd.service
bash -l
'
怎么了? 我已成功連接到服務器,用戶已更改,然后我什么也沒看到。 當我像在終端中那樣按 ctrl + c 時,會出現一些應該執行的命令的輸出,但有一些錯誤。
為什么在啟動腳本后我看不到終端中發生的一切? 我做錯了嗎?
順便說一句:當我嘗試手動連接並自己運行命令時,一切都運行良好。
使用 CentOS 7。
通過 ssh 登錄並執行一組命令的干凈方法是
ssh user@ip << EOF
#some commands
EOF
這里EOF
作為命令列表的分隔符
腳本可以修改為
ssh -t root@IP << EOF
#switch user to deploy
su - deploy
#switch path
echo "Switching the path"
cd /var/www/deploys/bin/app/config
#run deploy script
echo "Running deploy script"
/usr/local/bin/cap -S env=prod deploy
#restart apache
sudo /bin/systemctl restart httpd.service
bash -l
EOF
將執行命令並在那里關閉連接
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.