加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

登录FreeBSD ssh时使用bash shell

发布时间:2020-12-15 18:32:44 所属栏目:安全 来源:网络整理
导读:我正在寻找一种方法来确保我的命令是由一些使用csh作为默认 shell的FreeBSD 11机器上的bash执行的. 以下是我的代码适用于Linux CentOS / Debian / MacOS X / pfSense 2.3(在FreeBSD 10.3上运行)甚至Windows 10 bash,但在FreeBSD 11上不起作用 cat "/some/fil
我正在寻找一种方法来确保我的命令是由一些使用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已经安装并且可以执行.
我对在FreeBSD上更改用户的默认shell不感兴趣.

这里有什么想法?

我最好的猜测是将问题分开:

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)命令.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读