linux - sshpass 在 70 行后停止解析管道输入
问题描述
我制作了一个 bash 脚本,通过 SSH 使用 office365 IP 自动更新 Cisco ASA 上的对象组。
我从 MS 获取 IP,为 ASA 构建正确的命令语法,并将所有命令写入文件(现在 90 行,但由于这是动态的,它可以增长或缩小)。然后我想将文件中的命令推送到 ASA:
cat outfile.txt | sshpass -p "Password" ssh -t -oStrictHostKeyChecking=no foo@1.1.1.1
但是 sshpass 在第 70 行之后停止发送命令。所以 outfile.txt 有 90 行,但无论我尝试在哪个主机上“部署”命令,它只发送前 70 行。之后我得到一个
Connection to 1.1.1.1 closed by remote host.
在防火墙上,我看到来自服务器的 TCP 重置,但正如我所说,在哪个主机(尝试不同的防火墙、路由器和其他服务器)上都没有关系,我尝试它不会发送超过前 70 行。
任何人都可以解决我的问题或以其他方式解决我的问题?
谢谢
解决方案
试试这个,也许它不漂亮但应该可以。来自服务器的最后一条消息也可以是“远程主机关闭连接”,但所有配置都应该已经正确添加。
#!/bin/bash
where="<path to your outfile.txt>";
len=`cat $where | wc -l`;
config=`for (( c=1; c<=$len; c++ )) do line=\`sed -n "$c""p" $where\`; echo $line; done`;
sshpass -p "Password" ssh -t -oStrictHostKeyChecking=no foo@1.1.1.1 $config
请考虑使用 ssh 密钥代替 sshpass。
推荐阅读
- node.js - 如何将 Socket 与其他 Nodejs 请求一起使用
- powershell - 使用 IndexOf 使用 Powershell 解析文本
- ios - 在 SwiftUI 中实时获取移动视图的坐标
- java - 完全改变java
- c - gmp中带有bigint的算术`未分配重新分配的指针`
- python - 如何修复“QuerySet”对象没有属性“get_performance”
- sql - 子查询返回超过 1 个值。这是什么意思?
- java - 如何将有效日期作为字符串接收,但如果不保留默认构造函数分配的默认值?
- python - 使用 GenericRelation() 编写嵌套序列化程序
- c++ - 如何绘制和写入 ppm 文件?