用shell的linux服务器 .sh插件怎么从远程ftp服务器下载文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用shell的linux服务器 .sh插件怎么从远程ftp服务器下载文件相关的知识,希望对你有一定的参考价值。

//ftpput.sh
[cpp] view plain copy
#!/bin/sh
#FileName:ftpput.sh
#Function:从本地客户端向ftp服务器上传一个文件
#Version:V0.1
#Author:Sunrier
#Date:2012-07-20

#$#表示传递给此Shell脚本的参数个数
#-ne表示不等于
if [ $# -ne 2 ]
then
echo "Usage $0 <local_dir/filename> <remote_dir>"
exit 1
fi

#IP表示ftp的服务器ip地址
IP=127.0.0.1
#IP=192.168.6.1

#FULLNAME获取本地文件全路径名
FULLNAME=$1

#DESTDIR获取需要上传的ftp远程目录路径
DESTDIR=$2

#basename返回一个路径中的文件名部分
#如FULLNAME="/home/Sunrier/Proj/log/test.log";
#当local_filename=`basename $FULLNAME`
#最终local_filename="test.log"
local_filename=`basename $FULLNAME`

#DESTFILE表示ftp服务器的路径,以及保存后的文件名
DESTFILE=$DESTDIR/$local_filename

#ftp -i -n $IP <<FTPIT
ftp -i -n <<FTPIT
open $IP
user Sunrier redhat
bin
passive
cd /home/remote/log/ftpfile
put $FULLNAME $DESTFILE
quit
FTPIT

exit 0

//注释:
[cpp] view plain copy
#!/bin/sh
#FileName:ftpput.sh
#Function:从本地客户端向ftp服务器上传一个文件
#Version:V0.1
#Author:Sunrier
#Date:2012-07-20

#$#表示传递给此Shell脚本的参数个数
#-lt表示小于
#-eq表示等于
#-ne表示不等于
if [ $# -ne 2 ]
then
echo "Usage $0 <local_dir/filename> <remote_dir>"
exit 1
fi

#IP表示ftp的服务器ip地址
#IP=127.0.0.1
IP=192.168.6.1

#FULLNAME获取本地文件全路径名
FULLNAME=$1

#DESTDIR获取需要上传的ftp远程目录路径
DESTDIR=$2

#basename返回一个路径中的文件名部分
#如FULLNAME="/home/Sunrier/Proj/log/test.log";
#当local_filename=`basename $FULLNAME`
#最终local_filename="test.log"
local_filename=`basename $FULLNAME`

#DESTFILE表示ftp服务器的路径,以及保存后的文件名
DESTFILE=$DESTDIR/$local_filename

#-i表示在多个文件传输期间关闭交互提示
#-n表示禁止自动登录到初始连接
#<<FTPIT 和最后的 FTPIT:术语叫:当前文档here documents. here document 就是一段特殊目的的代码块,
#它使用I/O重定向的形式来将一个命令序列传递到一个交互程序或者命令中,比如ftp、cat,或者ex文本编辑器.
#本句可以理解从<<FTPIT开始以非对话模式的ftp连接,直到输入FTPIT为止的所有命令.
#当然FTPIT这个名字是可以随便取的,不一定必须是FTPIT,可以取其它的名字。
#ftp -i -n $IP <<FTPIT
ftp -i -n <<FTPIT

#连接到指定ftp服务器上
open $IP
#连接到指定ftp服务器上,并指定端口
#open $IP $PORT

#登陆ftp服务器上的用户名和密码
#user username password
user Sunrier redhat

#bin表示以二进制方式传输
#bin等价于bi,binary等
#另一种方式传输是ascii,默认情况下,将文件传输类型设置为ASCII
bin

#主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口
#被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTP服务器的情况.
#因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过.
#因此在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作.
#passive表示设置为被动模式的FTP
passive

#cd表示更改ftp服务器上(即远程计算机)的工作目录
cd /home/remote/log/ftpfile

#lcd表示更改本地计算机的工作目录
#lcd /home/Sunrier/Proj/log/

#put local_file [ remote_file ]
#其中local_file是指定要复制的本地文件,remote_file是指定要复制的远程计算机上的文件名,
#remote_file为可选项,如果不指定的话是和本地计算机上的文件名同名.
#put表示把本地路径下的文件复制到FTP服务器(远程计算机)上设置的路径下的文件
put $FULLNAME $DESTFILE

#quit表示结束与远程计算机的FTP会话,并退出FTP.
#还有个等价的命令为bye(或by)结束与远程计算机的FTP会话并退出FTP
quit

#here document块结束
FTPIT

#正式写这个Shell脚本时,here document中的#和空行都会执行,
#所以为了消除警告最好去掉here document块中#开头的语句以及空行,
#暂时我还没有找到here document中有效的注释语句的方法.

exit 0

//ftpget.sh
[cpp] view plain copy
#!/bin/sh
#FileName:ftpget.sh
#Function:从ftp服务器上下载一个文件到本地计算机上
#Version:V0.1
#Author:Sunrier
#Date:2012-07-20

#$#表示传递给此Shell脚本的参数个数
#-ne表示不等于
if [ $# -ne 2 ]
then
echo "Usage $0 <remote_dir/filename> <local_dir>"
exit 1
fi

#IP表示ftp的服务器ip地址
IP=127.0.0.1
#IP=192.168.6.1

#FULLNAME获取从ftp服务器上下载的文件全路径名
FULLNAME=$1

#DESTDIR获取从ftp服务器上下载的文件所存放的本地计算机的目录路径
DESTDIR=$2

#remote_filename获取从ftp服务器上下载的文件名
remote_filename=`basename $FULLNAME`

#DESTFILE表示下载文件所存放的本地路径,以及本地保存后的文件名
DESTFILE=$DESTDIR/$remote_filename

#ftp -i -n $IP <<FTPIT
ftp -i -n <<FTPIT
open $IP
user Sunrier redhat
bin
cd /home/remote/log/ftpfile
get $FULLNAME $DESTFILE
quit
FTPIT

exit 0

#get remote_file [ local_file ]
#remote_file是指定要复制的文件,local_file是指定本地计算机上的文件名,
#local_file为可选项,没有指定的话则跟remote_file同名。

//20120726改进版本
[cpp] view plain copy
#!/bin/sh
#FileName:ftpput.sh
#Function:从本地客户端向ftp服务器上传一个文件(添加远程目录是否存在判断功能)
#Version:V0.2
#Author:Sunrier
#Date:2012-07-26

#$#表示传递给此Shell脚本的参数个数
#-ne表示不等于
if [ $# -ne 2 ]
then
echo "Usage $0 <local_dir/filename> <remote_dir>"
exit 1
fi

#IP表示ftp的服务器ip地址
IP=127.0.0.1
#IP=192.168.6.1

#FULLNAME获取本地文件全路径名
FULLNAME=$1

#DESTDIR获取需要上传的ftp远程目录路径
DESTDIR=$2

#dirname返回路径中的目录部分
#DESTDIR="/home/Sunrier/Proj/log/test.log";
#当PREDESTDIR=`dirname $DESTDIR`
#最终PREDESTDIR="/home/Sunrier/Proj/log"
PREDESTDIR=`dirname $DESTDIR`
SUFFIXDESTDIR=`basename $DESTDIR`

LOCALDIR=`dirname $FULLNAME`

#basename返回一个路径中的文件名部分
#如FULLNAME="/home/Sunrier/Proj/log/test.log";
#当local_filename=`basename $FULLNAME`
#最终local_filename="test.log"
local_filename=`basename $FULLNAME`

#DESTFILE表示ftp服务器的路径,以及保存后的文件名
DESTFILE=$DESTDIR/$local_filename

#ftp -i -n $IP <<FTPIT
ftp -i -n <<FTPIT
open $IP
user Sunrier redhat
dir $PREDESTDIR $LOCALDIR/tmp.txt
quit
FTPIT

#find $LOCALDIR -name "tmp.txt" -type f | xargs grep "^d.*$SUFFIXDESTDIR$"
#find . -name "tmp.txt" -type f | xargs grep "^d.*$SUFFIXDESTDIR$"
#find . ! -name "." -type d -prune -o -type f -iname "*tmp.txt" -print | xargs grep "^d.*$SUFFIXDESTDIR$"
#grep "^d.*$SUFFIXDESTDIR$" \\$LOCALDIR/tmp.txt
#grep后面查找字符两边加不加引号效果相同

grep ^d.*$SUFFIXDESTDIR$ $LOCALDIR/tmp.txt >/dev/null 2>&1

#$?表示上一个命令的运行结果,0表示成功,其它值表示失败
#if [ $? != 0 ]
if [ $? -ne 0 ]
then
rm $LOCALDIR/tmp.txt
exit 1
fi

#mkdir创建远程目录
#mkdir $DESTDIR

#ftp -i -n $IP <<FTPIT
ftp -i -n <<FTPIT
open $IP
user Sunrier redhat
bin
passive
cd /home/remote/log/ftpfile
put $FULLNAME $DESTFILE
quit
FTPIT

rm $LOCALDIR/tmp.txt
exit 0

[cpp] view plain copy
注:

FTP服务器的启动:
[root@localhost ~]# service vsftpd start
为 vsftpd 启动 vsftpd: [确定]

FTP服务器的端口一般默认为21:
[root@localhost ~]# netstat -nat
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:2208 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:523 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:50000 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:601 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:2207 0.0.0.0:* LISTEN
tcp 0 0 :::22 :::* LISTEN
[root@localhost ~]#

在使用system执行Shell脚本时,如system("ftpput.sh"),system返回值低8位为system执行脚本所接收到的信号值,9~16位为Shell脚本所设置的exit退出值
参考技术A 你是要下载.sh文件,还是要下载别的文件
linux服务器一般下载的时候,是用wget命令去下载的
下载的.sh文件,一般为shell脚本,直接运行就可以。追问

是下载别的文件,编辑一个.sh的插件,用这个插件下载ftp上的文件

追答

那就把shell脚本,写到 .sh文件里,然后运行这个脚本就可以自动下载了。

怎么用shell格机

怎么用shell格机

1. 首先,打开您的shell终端,比如Linux或Mac OS X下的Terminal,Windows下的CMD或PowerShell。

2. 使用cd命令切换到您想要使用shell的目录。

3. 使用ls命令列出当前目录下的文件和文件夹。

4. 使用mkdir命令创建新的文件夹。

5. 使用rm命令删除文件和文件夹。

6. 使用cat命令查看文件的内容。

7. 使用cp命令复制文件和文件夹。

8. 使用mv命令移动文件和文件夹。

9. 使用grep命令搜索文件内容。

10. 使用man命令查看shell命令的帮助文档。
参考技术A 1. 打开命令行终端:在 Windows 中,打开开始菜单,搜索“命令提示符”,单击“命令提示符”就可以打开一个命令行终端。在 Mac OSX 中,在应用程序文件夹中找到“终端”,打开就可以了。
2. 输入shell指令:输入shell指令,按回车键,系统就会执行你输入的指令。
3. 查看帮助文档:在输入shell指令之前,可以先查看帮助文档,如 man help,然后按回车键,系统就会显示该指令的使用方法。
4. 结束shell:可以输入 exit 或者 logout 来退出shell。
参考技术B Shell是一种用于运行命令和编写脚本的命令行操作系统。它可以用来执行简单任务,如搜索文件、复制文件和管理用户权限,以及执行复杂的任务,如编写脚本来自动化系统管理任务。
使用Shell的步骤:
1. 打开一个Shell终端:在Linux和Mac OS X上,使用终端程序可以打开一个Shell终端,而在Windows上可以使用PowerShell或Cygwin来打开一个Shell终端。
2. 运行命令:在Shell终端中,可以输入各种命令来控制和管理系统,如查看文件、复制文件,以及更改权限等等。
3. 编写脚本:Shell还可以用来编写脚本,这些脚本可以用来自动化管理和控制系统,如自动安装软件、监控系统性能等。
4. 保存脚本:脚本文件可以保存在系统上,以便于以后使用。
5. 运行脚本:编写完脚本后,可以在Shell终端中运行该脚本,来实现自动化的系统管理任务。
参考技术C 您好,shell格式是一种文本格式,它是用来编写脚本的一种语言。它是一种命令行语言,可以用来控制计算机系统,执行简单的任务,也可以用来编写复杂的脚本。要使用shell格式,首先要熟悉shell的基本语法,其次要熟悉shell的内置命令,最后要了解shell的环境变量。使用shell格式可以让您更有效地控制计算机系统,更好地完成您的任务。 参考技术D 使用shell脚本来操作Linux系统非常简单,您可以使用以下步骤来完成:1.使用文本编辑器创建shell脚本文件;2.使用chmod命令设置shell脚本文件的权限;3.使用./命令执行shell脚本文件;4.使用echo命令输出shell脚本的执行结果。

以上是关于用shell的linux服务器 .sh插件怎么从远程ftp服务器下载文件的主要内容,如果未能解决你的问题,请参考以下文章

要在一台主机上执行shell脚本判断另一台上的某个文件是不是存在,这个shell语句该怎么写?

怎么用一个命令使多个shell脚本并行执行? 例如三个脚本 run1.sh,run2.sh

在Notepad++上怎么执行shell脚本运行

怎么用shell格机

Linux下如何执行Shell脚本

如何在shell中执行一个模块,这个模块需要传入参数