有一個問題,試圖讓一個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