标签归档:ftp

ftp结合ssh一个部署代码的shell

操作原理,用ftp上传一个zip文件,然后再用ssh 登录到服务器,进入到相应的目录,用unzip进行解压。然后用rm删除该文件

#!/bin/bash

#Usage:totserver project_name zip_file_to_deploy

work_path=$1
file_to_deploy=$2

host="itianmen.com"
id="hello"
pw='helloworld'
remotedir="/home/work/path/$work_path/"

ftp -v -n "$host"  <<EOF
user $id $pw
binary
hash
cd $remotedir
put $file_to_deploy
bye
EOF

ssh $id@$host <<EOF
cd $remotedir
unzip -o $file_to_deploy
rm $file_to_deploy
EOF

可以将ftp的代码替换成scp

linux 下ftp命令基本操作

ftp是个很古老的文件传输方式,基本上所有的服务器上都支持这种传输方式,当然也包含了国内外的各种虚拟主机。了解了,这些命令,就再也不用找什么客户端之类的,而且,传输速度绝对超过任何一种客户端。【当然速度的快慢取决于你本地的网速】

连接服务器:
ftp -v -n itianmen.com
其中-v表示显示详细的信息,-n表示需要连接的主机名,然后附加需要连接的服务器的IP或者域名。

连接上服务器以后,就可以看到ftp>的提示符,然后就可以按照ftp的命令来操作文件了。其中常用的命令如下:

cd 切换远程的目录
lcd 切换本地主机的目录
put 上传文件
mput 上传多个文件
get 下载文件
mget 下载多个文件
binary 切换成二进制传输模式
ascii 切换成ascii模式
hash 用#的方式表示数据的传输进度。

下边用一个简单的shell脚本来指示如何使用这些命令。当然你也可以编写更加丰富的功能来完成相关的操作。这样就可以创造出比任何一个ftp客户端都要好的部署工具

#!/bin/bash

host="itianmen.com"
id="username"
pw='yourpassword'
remotedir="/home/itianmen/remote"

current_date=`date "+%Y%m%d%H%I%S"`
tar -zcvf "$current_date.tar.gz" /etc/
ftp -v -n "$host"  <<EOF
user $id $pw
binary
hash
cd $remote_dir
lcd "/home/istrone/"
put "$current_date.tar.gz"
bye
EOF

这个脚本只是完成一个简单的功能,把本地/etc目录下的文件备份hello.tar.gz,然后用ftp的方式传输到服务器的/home/itianmen/remote的目录下。