关于ssh -n

关于ssh -n,man 提示为:redirects stdin from /dev/null. This must be used when ssh is run in the background.
有人知道大概是什么意思吗?

因为我有这样一个问题:
  1. while read input
  2. do
  3. file=$(echo $input |awk '{print $1}')
  4. md5=$(echo $input | awk '{print $2}')

  5. scp /data/$file root@10.1.1.2:/data

  6. md5_curr=`ssh root@10.1.1.2 "md5sum /data/$file" | awk '{print $1}'`

  7. if [ $md5 != $md5_curr ];then
  8.   echo "MD5 Error"
  9. fi

  10. done < /data/a.txt
复制代码
  1. # cat /data/a.txt
  2. 1.txt asdfasdfasdfadsf
  3. 2.txt dafsadsfasfdagff
复制代码

这个脚本只能够scp 1.txt,但read 第二行时显示为空。

必须在ssh,上加上-n才可以read第二行。是不是stdin变了,不再是/data/a.txt??

 

------------------

因为连接没有断开
而-n会运行完毕后,自动断开连接

 

---------------------

 

ssh时,ssh从while里继承stdin为/data/a.txt,然后把值读取了,但这些值对它来说没意义,所以被忽略了,然后继续执行md5sum的命令。这时while再从/data/a.txt读时,已经为空。

-n 后设定ssh的stdin为/dev/null,这样就不会继承while的stdin???

 

-------------------

 

这就是原因,这个while重定向会先exec n<&0把标准输入copy一份存起来,然后exec 1<$servers_filename,然后开始循环,但你循环内部没有指定-n,ssh命令默认读标准输入就是把文件读了。

但我完全没发现ssh会读标准输入啊,不知道了。

`ssh -n`是一个Unix/Linux命令行选项,用于无交互式模式下运行SSH (Secure Shell)。这个选项常用于自动化脚本或者服务,其中不需要用户的输入。以下是使用`ssh -n`的基本步骤: 1. **准备SSH客户端和服务器**:首先,你需要在你的机器上安装并配置SSH服务。对于Linux,它通常是预装的;而对于Mac,可以在Homebrew等包管理器中安装。 2. **获取目标主机的IP地址或域名**:确定你要连接的远程计算机的IP地址或DNS名称。 3. **打开终端**:在你的本地机器上,找到终端应用程序(比如在macOS上是Terminal,在Ubuntu或Debian系列上是gnome-terminal或terminator)。 4. **使用SSH连接**:在终端中键入命令,格式如下: ``` ssh -n user@remote_host ``` 其中 `user` 是你在目标主机的用户名,`remote_host` 是你想连接的主机名或IP地址。 5. **添加 `-n` 参数**:这是关键部分,`-n` 表示“no newline”,即不让SSH等待用户的输入。这使得命令行不会暂停等待命令提示符。 6. **执行远程命令**:一旦连接建立,你就可以在命令行后直接输入要执行的命令了,这些命令将在远程服务器上运行,就像你亲自登录一样。例如,如果你想运行一个bash命令,输入`ls`。 7. **退出会话**:当你完成任务后,可以正常退出SSH会话,比如输入 `exit` 或关闭终端窗口。 8. **错误检查**:如果遇到连接失败或其他错误,检查你的SSH密钥是否正确配置,并确认目标主机是否已开启SSH服务。 注意:虽然无交互模式可以方便自动化,但在生产环境中,建议还是提供某种形式的认证,以防未经授权的访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值