【shell 脚本】根据给定的网址来使用相应的协议下载文件

现在要求写一个程序,接受命令行给定一个网址去下载一个文件,要求根据网址的协议的不同,采用不同的程序下载。
如果给定的网址以.xml结尾,则认为要下载的文件已经在给定的网址中指定,否则要下载的文件名为本机的mac地址加.xml扩展名,不包括mac中的冒号。

#!/bin/bash
url=$1
proto=${url%%://*}
mac_addr=$(ifconfig eth0 | grep HWaddr|awk '{print $NF}'|tr -d :
[ -z "${url##*.xml}" ] || url=$url/$mac_addr.xml
if [ $proto == "http" ] || [ $proto == "ftp" ]
 then
  echo "wget $url -O local_file"
else
  tmp=${url#*://}
  host=${tmp%%/*}
  remote_file=${tmp#*/}
  echo "tftp -g -r $remote_file -l locate_file $host"
fi
exit 0
==========测试===============
root@client.example.com # ./getPro.sh  http://hostname.com/onepath/anotherpath
wget http://hostname.com/onepath/anotherpath/0015C5F146A2.xml -O local_file
root@client.example.com # ./getPro.sh  tftp://hostname.com/onepath/anotherpath
tftp -g -r onepath/anotherpath/0015C5F146A2.xml -l locate_file hostname.com
root@client.example.com # ./getPro.sh  tftp://hostname.com/onepath/anotherpath.xml
tftp -g -r onepath/anotherpath.xml -l locate_file hostname.com

root@client.example.com # 

时间: 2025-01-19 11:44:47

【shell 脚本】根据给定的网址来使用相应的协议下载文件的相关文章

shell脚本里的命令加参数 参数 是从另一个文件中取得 怎么设置

问题描述 shell脚本里的命令加参数 参数 是从另一个文件中取得 怎么设置 test.sh如下 #!/bin/bash usr/local/bin/ipmitest -I lanplus -H 10.18.32.80 -U root -P password -e sol active arg_conf 如下 10.18.32.90 root password 10.18.32.100 admin admin 10.18.32.110 test password 脚本里的命令的 ip user

面向 DBA 的 Linux Shell 脚本简介

http://www.itpub.net/showthread.php?s=&threadid=720028 面向 DBA 的 Linux Shell 脚本简介 7 年前,Oracle 发布了 Linux 上的第一个商业数据库.从那时起,Oracle.Red Hat 和 Novell/SUSE 就不断地合作更改 Linux 内核,从而提高数据库和应用程序的性能.正因为这样,用于 Linux 的 Oracle 数据库 10g 才包含了与操作系统紧密相关的许多增强功能.DBA 比以往任何时候更需要了

[网摘学习]Shell脚本编程学习入门:Shell编程基础

51cto的这篇文章不错,收藏一下:http://os.51cto.com/art/201109/294521.htm(版权归原作者所有) Shell脚本编程学习入门是本文要介绍的内容,我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):   #!/bin/sh ... 注意:最好使用"!/bin/bash"而不是"!/bin/sh",如果使用tc shell改为tcsh,其

Shell脚本编程学习入门 02

Shell脚本编程学习入门是本文要介绍的内容,我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):   #!/bin/sh ... 注意:最好使用"!/bin/bash"而不是"!/bin/sh",如果使用tc shell改为tcsh,其他类似. 符号#!用来告诉系统执行该sell脚本的程序,本例使用/bin/sh.编辑结束并保存后,如果要执行该shell脚本,必须先使其可执

shell read s-shell脚本使用read-s会不会保存在命令记录历史文件中

问题描述 shell脚本使用read-s会不会保存在命令记录历史文件中 在shell脚本中要用到read-s输入密码,但有博客说read-s会将输入内容当作命令保存在历史文件记录中 说法不详细.自己查看了history文件中并没有记录,求知道的帮忙给个详细解释. 另外使用stty-echo不回显,为啥再使用输入重定向时会有stty:standard错误 解决方案 你还可以试试passwd,这个应该不会保存到历史记录中. adduser "$1" echo "$2"

用shell脚本监控进程是否存在 不存在则启动的实例_linux shell

用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/sh ps -fe|grep processString |grep -v grep if [ $? -ne 0 ] then echo "start process....." else echo "runing....." fi ##### processString 表示进程特征字符串,能够查询到唯一进程的特征字符串 0表示存在的 $? -ne 0 不存在,$? -eq 0 存

shell脚本中的"2< " ">&2" "&>"

shell脚本中的"2< " ">&2" "&>" linux标准文件描述符: 文件描述符 缩写 描述 0 STDIN 标准输入 1 STDOUT 标准输出 2 STDERR 标准错误 标准输入和标准输出指的就是键盘和显示器. 当文件描述符(0,1,2)与重定向符号(<)组合之后,就可以重新定向输入,输出,及错误. command    2>file1    命令执行的错误信息保存到了file1文件中

教你使用Linux系统的Shell脚本维护Oracle

系统管理员与 DBA 之间在职责方面存在差别.但实际上,这种差别通常并不明显.许多 IT 部门雇佣一些可解决数据库级以及操作系统级问题的员工.当然,Oracle 数据库本身使用操作系统资源,并能与其环境紧密交互. 此外,许多系统管理员和DBA 发现将其工作相关的任务自动化很有必要或比较方便.软件安装.系统资源监视以及系统管理涉及一些重复和容易出错的任务,而自动过程可以比手动过程更好地完成这些任务. 将这些任务自动化的方法之一是shell 脚本. Shell 脚本自 Linux 系统安装之初就起着

linux中的shell脚本管理(二)

在Shell脚本中执行使用if语句的好处是:可以根据特定的条件(eg:判断备份目录是否存在)来决定是否执行某项操作,当满足不同的条件时执行不同的操作(eg:备份目录不存在则创建该目录,否则跳过操作).该文将分别从条件测试操作,if语句结构,应用示例这三个方面讲解if语句在Shell脚本中的应用. 1.条件测试操作: 需要在Shell脚本中有选择性地执行任务时,首先面临的问题就是,如何设置命令执行的条件? 在Shell环境中,可以根据命令执行后返回状态值来判断该命令是否成功执行,当返回值为0是表示