如何可靠地将&可移植的二进制信息序列化为POSIX shell

分享于 

2分钟阅读

互联网

  繁體

问题:

我正在尝试实现一个工作编排器,该编排器的代理程序/工作器程序通过SSH会话/外壳程序连接到计算机。


echo -n "BINARY_BASE64_DATA" | base64 --decode > file_destination.file



问题

问题的症结在于使用哪种工具具有最大的兼容性。大多数Linux机器(即使是bare-bones Docker/Vagrant镜像)安装了base64,但是,FreeBSD没有预安装这个命令。

https://en.wikipedia.org/wiki/List_of_Unix_commands表示:

这是IEEE Std 1003.1-2008指定的UNIX命令列表,它是单个UNIX规范(SUS )的一部分,


$ uuencode



Command 'uuencode' not found, but can be installed with:



apt install sharutils


Please ask your administrator.



在基于Ubuntu 14.04的Docker镜像上,我得到:


# uuencode


bash: uuencode: command not found




答案1:

为什么Ubuntu在所有情况下都不包括uuencode/uudecode ?

可移植的shell脚本很难,base64相对容易一些,但仅检查2个发行版后,您已经发现细微的差别。通常脚本语言有助于移植性,比如python (base64 )或Perl (MIME::Base64 )。

Ansible解决方案的一部分可移植性是使用Python,包括处理任意文件。



BIN  pos  REL  INF  info  Shell  
相关文章