有一个问题,试图让一个bash脚本从一个文件中读取IP地址和用户名,该文件在windows上挂载到该共享,然后将ano文件类型复制到一个新文件夹中称为用户名称。 目前它不太有效,它会创建数百个名为* .ano的文件夹,如果它无法找到Windows共享。用于从多台Windows机器复制文件的Linux脚本
请帮助
文本文件:
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
大家好,感谢这么快的回复大家好,感谢这么快的回复,我改变了代码如下,但仍然得到多个文件我在这里做了一些错误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;执行 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 – Grimlockz 2011-04-21 09:46:57
@pepoluan感谢您的帮助,我已经更改了代码,但仍然得到多个文件,我在这里做了一些错误: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;做 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 ' – Grimlockz 2011-04-21 10:46:37
@Grimlockz如果挂载失败,则不能rsync;在'mount'行后面加'&&'(空格和)。 '&&'意味着只有当最后一个命令返回'0'时(这在* nix世界中意味着成功)才执行下一个命令*。另外,你可以放置第2行和第3行(带'grep'和'awk'的行);他们不再需要了。 – pepoluan 2011-04-21 13:59:15