奇怪的差异行为

时间:2013-12-12 22:01:08

标签: linux ssh diff expect

我有一个名为this.txt的文件,其中包含以下内容:

a
b
c
d

我使用ls /home > this.txt

生成的

然后我创建一个名为that.txt的文件,其中包含以下内容:

a
c
d
f

我使用ssh -p 1111 root@176.178.1.8 'ls /home' > that.txt

生成的

当我使用diff this.txt that.txt比较两者时,我得到了正常结果。

然后我使用that2.txt脚本获取文件expect以避免输入ssh连接的密码,并使用此内容

a
c
d
f

使用cat我比较(视觉上)两个文件并且是相同的,但是当我使用diff this.txt that.txt时,我得到的结果毫无意义(它表示来自this.txt的任何内容都在{ {1}})。

此外,如果我使用that2.txt,我会得到无意义的结果。

也许是因为我使用两种不同的解释器(因为我使用expect和bash)并且文件编码不同?有什么想法吗?

PD:希望我自己解释一下。我不是说英语的人,这是我的第一个问题。

1 个答案:

答案 0 :(得分:1)

我假设您的文件在行的末尾或不同的行尾标记处都有空白,可能两者都有。请比较od -c that.txtod -c that2.txt的输出。此外,可能值得检查文件大小。

哦,我应该补充一点,您不需要将密码放入expect脚本中。 ssh可以使用公钥对,很多更安全的替代方案,而且不是很难设置。检查man ssh-keygen是否有开始。