TFTP与脚本
起因
很多的嵌入式开发板使用uboot升级系统的时候会使用tftp协议,需要在PC端使用tftp命令把文件传给开发板命令如下:
1 | tftp IP地址 -m binary -c put 文件 |
但是PC端的tftp命令并不好用,它只能传输当前路径的文件,也就是说命令运行的路径要和实际传输的文件路径是一样的。所以每次我都是这样操作
1 | cd /path/to/binary_file |
费劲!
改进
在多次繁琐的使用过程之后我发现我大部分时间只用tftp的这一种功能,其他的功能几乎用不上,所以编写了一个bash脚本简化整个过程,如下:
1 |
|
把文件改名为tf,添加可执行权限然后放到PATH的目录下面,后面要传输文件给开发板就容易了:
1 | tf IP地址 文件路径 |
省去了cd命令和tftp的参数,效率不就上去了。
新的问题
后来公司的网络结构做了变化,之前编译代码的工作机有双网卡,即可以访问OA网段又可以访问开发板所在的测试网段。变化之后工作机拆除了双网卡,只保留了访问OA网段的网卡,但是可以通过一个服务器访问测试网段。所以在工作机使用之前的命令传输文件就不太可能了,但是这样把工作机的文件传输给开发板就更麻烦了。这就引发了一个问题:把工作机的文件发给开发板需要几步?
- scp 文件到服务器
- ssh登录到服务器
- 执行tftp
但是我感觉可以缩减到一步。
- tftp命令可以可以替换为之前的tf命令,那么整个过程就是scp → ssh → tf
- 整个过程可以写为一个脚本
脚本如下
1 |
|
问题完美解决!