我有两行需要在 for 循环中重复执行
ssh tam@192.168.174.43 mkdir -p $location
scp -r $i tam@192.168.174.43:$location
但是每次都需要输入密码,我怎样才能改变密码然后只需要输入一次或更多的快速方式
您可以使用 ssh-keygen ( https://help.ubuntu.com/community/SSH/OpenSSH/Keys )使用公钥/私钥生成方法,然后使用以下脚本。
for VARIABLE in dir1 dir2 dir3
do
ssh tam@192.168.174.43 mkdir -p $location
scp -r $i tam@192.168.174.43:$location
done
替代解决方案:您可以使用sshpass
for VARIABLE in dir1 dir2 dir3
do
ssh tam@192.168.174.43 mkdir -p $location sshpass -p '<password>' <command>
scp -r $i tam@192.168.174.43:$location sshpass -p '<password>' <command>
done
虽然公钥/私钥是最简单的选择,但无需更改现有脚本,还有另一种选择,即使用sshfs
. 默认情况下可能未安装 sshfs。
使用这种方法,您基本上mount
可以通过 ssh 协议将远程文件系统转移到本地目录。然后您可以简单地使用 mkdir / cp 等命令。
注意:这些命令来自您的系统而不是远程系统。
通过 ssh 挂载是一项一次性工作,需要您手动干预。在运行脚本之前执行此操作。
例如,对于您的情况:
mkdir /tmp/tam_192.168.174.43
sshfs tam@192.168.174.43:/ /tmp/tam_192.168.174.43
tam@192.168.174.43's password: <ENTER PASSWORD HERE>
& 然后,在您的脚本中,使用简单的命令,例如:
mkdir -p /tmp/tam_192.168.174.43/$location
cp -r $i /tmp/tam_192.168.174.43/$location
& 卸载:
fusermount -u /tmp/tam_192.168.174.43