Bash 用SH编写Send命令脚本

Bash 用SH编写Send命令脚本,bash,sh,splunk,Bash,Sh,Splunk,我需要一个.sh脚本,它允许我只读取文件的第二行,然后将其发送到机器B 示例文件: 时间戳_pippo.csv 文件位于以下路径中: C:\Program Files\Splunk\var\run\splunk\csv 只有第二行row2\u send\u to\u计算机包含必须发送到计算机B的unix命令 发送命令后,必须删除文件timestamp_pippo.csv。 你能帮助我吗?我不熟悉。嘘 到目前为止,我所创造的只是: for a in $(C:\Program Files\Splu

我需要一个.sh脚本,它允许我只读取文件的第二行,然后将其发送到机器B

示例文件:

时间戳_pippo.csv

文件位于以下路径中:

C:\Program Files\Splunk\var\run\splunk\csv
只有第二行row2\u send\u to\u计算机包含必须发送到计算机B的unix命令

发送命令后,必须删除文件timestamp_pippo.csv。 你能帮助我吗?我不熟悉。嘘

到目前为止,我所创造的只是:

for a in $(C:\Program Files\Splunk\var\run\splunk\csv cat timestamp_pippo.csv|grep -v Row1_skipped);do
 ssh unix_machine@11.111.111.11 $a
 done

由于要保留for循环,请执行以下操作:

for cmd in $(head -2 timestamp_pippo.csv | tail -1); do ssh <machine> $cmd; done

尽管是tbh,但这是不好的-如果您实际扩展了它并使用了循环,那么您将进行到ssh机器的多个连接。最好创建所需的批处理文件,然后执行一次ssh并运行批处理。这里有一个关于在远程主机上运行本地脚本的合理解释:

感谢您的回复。我已经用这个脚本解决了:

path=/home/weblogic/testCSV/*.csv 对于$ls-lrt$path | awk'{print$9}'中的a;做 回声$head-2$a | tail-1 ssh unix_machine@11.111.111.11$head-2$a | tail-1 rm$a 已删除echo文件$a 打破 回声发送命令 完成

步骤: -检查文件 -执行旧文件 -删除该文件

我们必须发送到机器B的命令位于文件timestamp_pippo.csv的第二行

另一个问题:

如何在机器B中验证我的身份?
BR

head-2 timestamp_pippo.csv | tail-1将为您提供文件中的第二行。感谢您的回复,但我希望保留for循环,以备将来需要。我做了一些更改:path=C:\Program Files\Splunk\var\run\Splunk\csv*\u pippo.csv用于$path中的| grep-v Row1_跳过;是否@echo一个ssh unix_machine@11.111.111.11$a rm a根据我的需要完成,你认为正确吗?再次感谢你的回复,我根据你告诉我的做了一些新的更改。path=C:\ProgramFiles\Splunk\var\run\Splunk\csv\*\u pippo.csv,用于$head-2路径| tail-1;如果[-e$a]],则不回显$a;然后是ssh-unix_machine@11.111.111.11$a echo send command rm$a echo$a file removed else echo$a file不存在退出1 fi完成您认为我现在符合初始要求了吗?我有点困惑,我认为您的文件包含您希望在远程计算机上运行的命令,而不是文件名?或者它们是包含命令的批处理文件的名称?基本上,您是在复制文件$a,还是运行存储在字符串$a中的命令?
for cmd in $(head -2 timestamp_pippo.csv | tail -1); do ssh <machine> $cmd; done