gpt4 book ai didi

用于从多台 Windows 机器复制文件的 Linux 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 04:28:47 24 4
gpt4 key购买 nike

尝试制作一个 bash 脚本时遇到问题,该脚本将从安装到 Windows 上该共享的连接的文件中读取 IP 地址和用户名,然后将任何文件类型复制到名为用户名的新文件夹中。目前它还不太有效,如果找不到 Windows 共享,它会生成数百个名为 *.ano 的文件夹。

请帮忙

文本文件:

192.168.0.2 user1
192.168.0.3 user2

bash 脚本:

USER='/home/user/user.ip'
IPADDY=$(grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' $USER)
USERNAME=$(awk '{ print $NF }' $USER)
for i in $IPADDY $USERNAME
do
mkdir /home/user/Documents/$USERNAME
mount -t smbfs //$IPADDY/$USERNAME /home/user/$USERNAME
rsync -va /home/user/$USERNAME/*.ano /home/user/Documents/$USERNAME/*.ano
done

大家好,感谢您如此快速的回复,我已将代码更改如下,但仍然收到多个文件,我在这里做错了什么

    USER='/home/user/user.ip'
IPADDY=$(grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' $USER)
USERNAME=$(awk '{ print $NF }' $USER)
while read IPADDY USERNAME; do
mkdir /home/user/Documents/$USERNAME
mount -t smbfs //$IPADDY/$USERNAME /home/user/$USERNAME
rsync -va /home/user/$USERNAME/*.ano /home/user/Documents/$USERNAME/
done < $USER

最佳答案

问题出在 for 命令中。在您的脚本中,i 迭代 $IPADDY 的内容,然后 它迭代 $USERNAME 的内容。同时,循环内的 $USERNAME 扩展为 user1 user2,结果是:

mkdir /home/user/Documents/user1 user2

安装线变为:

mount -t smbfs //192.168.0.2 192.168.0.3/user1 user2 /home/user/user1 user2

等等。

而是循环文件本身:

while read IPADDY USERNAME; do
#awesome things here based on $IPADDY and $USERNAME
done < $USER

您可能需要添加[[ -z $IPADDY ]] && continue 以跳过文件中任何可能的空白行。

关于用于从多台 Windows 机器复制文件的 Linux 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5741344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com