先说明一下:为什么我们都用 git 了,有更新了直接
git pull
不就完了,为什么还用 scp?
答:运维可能觉得git clone
比wget
要麻烦吧。反正,本文的 shell 脚本,负责将git status
中有变化的文件 scp 到服务器上。
- 先安装下
sshpass
brew install sshpass
#!/bin/bash
git_abs_path="/Users/xxx/Desktop/singsound/php/git_repo"
echo -e "analysising \033[33m[$git_abs_path]\033[0m for scp..."
modified_file=$(cd $git_abs_path && git status | grep ".php" | awk -F ' ' '{sub("modified:", "", $0); sub("^[\t]*", "", $0); sub("^[ ]*", "", $0); ORS=""; print $0" ";}')
scpenv="47.100.xx.xx 47.100.xx.xx"
for mf in $modified_file;
do
for env in $scpenv;
do
echo -e "\033[31mscp\033[0m \033[33m[$mf]\033[0m \033[31mto $env...\033[0m"
scpres=$(sshpass -p "xxxxx" scp $git_abs_path/$mf user@$env:/var/www/git_repo/$mf)
done
done
image.png
网友评论