微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Bash脚本中的SSH混淆文件读取

我有一个脚本,逐行读取一个文件,并根据它读取的东西做东西。 它所做的一件事是ssh到远程服务器并获取一些信息。 出于某种原因,这完全超出了我,这停止了从文件中读取行。

该脚本本质上(我已经削减了很多,以简化问题,所以不要担心,如果它看起来没有什么作为):

cat $csv | while read line; do shopt -s nocasematch for j in "${file_list[@]}"; do found=0; for i in $(ssh some_server "ls /some_path/${line:0:1}/${line:1:1}/$line*"); do if [[ $i =~ .*$j$ ]]; then echo "do something"; found=1; break; fi; done; if [[ $found -ne 1 ]]; then echo "don't have $j"; fi; if [[ $found -ne 1 && $j == '.pdf' ]]; then getPDF $line ${dest}; fi; done; shopt -u nocasematch done

这个脚本只能运行在csv的第一行。 如果我用其他的东西来代替脚本的“ssh”部分,它会一直运行在文件的所有行上。 是什么赋予了?

sorting范围Linux

如何recursion删除具有不同扩展名的多个文件

linux批量重命名目录和strip#字符从名字

LD_LIBRARY_PATH的副作用

在configuration文件中使用ssh命令在远程机器上执行shell脚本

在bash脚本中,$' 0'会评估什么,为什么?

从terminal创build临时Cron作业

execl()bash返回一个eio(input/输出错误)后从标准input读取

在Apache Nifi中从ExecuteProcess调用远程shell脚本时,无法将envionmentvariables作为敏感字段传递

查看当前login的用户,并从/ etc / passwd获取他们的信息

ssh正在使用stdin。 通过-n 。

如果你在循环内运行从标准输入(如ssh )读取的命令,你需要确保:

你的循环不会遍历stdin

您的命令已将其stdin重定向到:

前者:

while read -u 5 -r; do ssh "$REPLY" ... done 5<file

…使用bash 4.1或更新版本,可以使用自动文件描述符赋值来重写:

while read -u "$file_fd" -r; do ssh "$REPLY" ... done {file_fd}<file

后者:

while read -r; do ssh "$REPLY" ... </dev/null done <file

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐