登录FreeBSD ssh时使用bash shell
我正在寻找一种方法来确保我的命令是由一些使用csh作为默认
shell的FreeBSD 11机器上的bash执行的.
以下是我的代码适用于Linux CentOS / Debian / MacOS X / pfSense 2.3(在FreeBSD 10.3上运行)甚至Windows 10 bash,但在FreeBSD 11上不起作用 cat "/some/filelist" | ssh -i "/home/user/.ssh/some_key" user@freebsd11 'bash -c "while read -r file; do stat -f "%N;%c;%m" "$file"; done | sort"' 在FreeBSD 11上输出上一个命令似乎是一个csh错误信息 Unmatched ". 检查哪个shell运行时,似乎csh运行.以下内容返回’csh’ ssh -i /home/user/.ssh/some_key user@freebsd11 'bash -c "echo $0"' 根据我的理解,BSD系统不允许更改shell,除非使用heredoc,但我不能使用heredoc发送cat“/ some / filelist”. 当然,bash已经安装并且可以执行. 这里有什么想法? 我最好的猜测是将问题分开: 1 /用cat / some / filelist发送文件ssh [..]’cat> somefile” 2 /在heredoc中使用发送的文件 ssh [..] 'bash -s' << 'EOF' while read -r file; do stat -f "%N;%c;%m" "$file" | sort; done < "$somefile" 'EOF' 这个解决方案可以工作,但是很麻烦,建立2个连接而不是一个,如果远程由于某种原因无法写入’somefile’,则无法工作.
如果简化命令行,shell可能无关紧要.这应该可行
ssh </some/filelist -i /home/user/.ssh/some_key user@freebsd11 xargs -n 1 stat -f "%N;%c;%m" | sort 或者,您可能希望将正在使用的特定用户的默认shell更改为bash – 请参阅chsh(1)命令. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Scalatest’DoubleTolerance’中的一个错误?
- 配置 – 如何在vim中覆盖?/ .vim和?/ .vimrc路径
- angularjs – 如何使用Smart-Table增加ng-repeat
- .NET中使用Exchange 2007 Webservice来读取邮件
- angular – agm标记不能从ngfor渲染
- bootstrap中aria-hidden=true的作用
- Yum不会在Amazon Linux上重新安装PHP
- JS组件Bootstrap Table使用实例分享
- Angular2入门系列(一)————如何在Angular2中
- angularjs – Angular:过滤器中的无限摘要循环