簡體   English   中英

bash腳本在ssh之后執行命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM