Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用密码将文件从共享文件服务器复制到多个主机_Bash_Macos_Ssh_Scp - Fatal编程技术网

Bash 使用密码将文件从共享文件服务器复制到多个主机

Bash 使用密码将文件从共享文件服务器复制到多个主机,bash,macos,ssh,scp,Bash,Macos,Ssh,Scp,我的网络上大约有20台Mac电脑需要安装字体 我有一个文件夹位置,我要求他们将需要同步的字体放在每台机器上(为了节省时间,我将在每台机器上安装字体,这样,如果他们移动机器,我就不需要再这样做) 目前,我只是手动将字体从这个服务器位置重新同步到所有机器上 rsync -avrP /server/fonts/ /Library/Fonts/ 这需要我用ssh连接到每台机器上 有没有一种方法可以使用带有ips的hosts.txt文件编写脚本?每台机器的密码都是一样的,我不想输入20次。安全不是问

我的网络上大约有20台Mac电脑需要安装字体

我有一个文件夹位置,我要求他们将需要同步的字体放在每台机器上(为了节省时间,我将在每台机器上安装字体,这样,如果他们移动机器,我就不需要再这样做)

目前,我只是手动将字体从这个服务器位置重新同步到所有机器上

rsync -avrP /server/fonts/ /Library/Fonts/  
这需要我用ssh连接到每台机器上

有没有一种方法可以使用带有ips的hosts.txt文件编写脚本?每台机器的密码都是一样的,我不想输入20次。安全不是问题

它允许我调用脚本并将其指向字体,即

./install-font font.ttf
我已经研究了scp,但在脚本的任何地方都没有看到指定密码的示例

cscp.sh

#!/bin/bash
while read host; do
  scp $1 ${host}:
done


project-prod-web1
project-prod-web2
project-prod-web3
用法

将文件复制到多个主机:

cscp.sh file < hosts
cscp.sh文件
但这会要求我每次键入密码,并且不会指定主机上的目标位置

我在脚本中没有看到任何指定密码的示例

cscp.sh

#!/bin/bash
while read host; do
  scp $1 ${host}:
done


project-prod-web1
project-prod-web2
project-prod-web3

使用命令将公钥安装到每个主机。之后,
ssh
scp
将使用公钥-私钥身份验证,而无需您输入密码。

这将在脚本中出现在哪里?如果有一个askpass在会话期间保持密钥解锁,或者有一个密钥没有密码(这是一个非常糟糕的主意)@davidlumix
ssh copy id
对每台主机使用一次。@在任何脚本之外,对每台主机运行一次
ssh copy id
。我建议你阅读我为你链接的那篇文章,它包含了你整理这个问题所需要的所有信息。你的问题有答案吗?