LINUX.ORG.RU

Bash многопоточность

 


0

1

У меня есть список ип адресов. Cкрипт подключается к каждому ip адресу получает нужную информацию, и так по циклу. Задача запустить данную функцию например в 12 подключениях одновременно

function run(){
  IPlist=$(cat ip.txt)
  for ippc in $IPlist
    do
        sshpass -p "$pass" ssh -o StrictHostKeyChecking=no $ogin@$ippc 'lsusb' > /tmp/log.txt
    fi
  done
}

самый тупой вариант

function run(){
  IPlist=$(cat ip.txt)
  for ippc in $IPlist
    do
        sshpass -p "$pass" ssh -o StrictHostKeyChecking=no $ogin@$ippc 'lsusb' >> /tmp/log.txt &
    fi
  done
}
iljuase ★★★
()

coproc, parallel.

anonymous
()
Ответ на: комментарий от vbox

Ну можно разбить файл или поизвращаться в скрипте и пускать цикл частями.

funky
()
export login=username
export pass=password
cat ip.txt | xargs -p12 -I{} sh -c "sshpass -p \"$pass\" ssh -o StrictHostKeyChecking=no $login@{} 'lsusb' > /tmp/log_{}.txt"
anonymous
()
Ответ на: комментарий от vbox
export login=username
export pass=password

cat<<EOF > run_func.sh
function run_lsusb(){
  sshpass -p "$pass" ssh -o StrictHostKeyChecking=no $login@${1} 'lsusb' > /tmp/log_${1}.txt
}
EOF
cat ip.txt | xargs -p12 -I{} bash -c 'source ./run_func.sh && run_lsusb {}' 
anonymous
()
Ответ на: комментарий от anonymous
cat ip.txt | xargs -p12 -I{} sh -c "sshpass -p \"$pass\" ssh -o StrictHostKeyChecking=no $login@{} 'lsusb' > /tmp/log_{}.txt"

Тогда уж:

xargs -a ip.txt -P12 -I{} sh -c "sshpass -p \"$pass\" ssh -o StrictHostKeyChecking=no $login@{} 'lsusb' > /tmp/log_{}.txt"

funky
()
Ответ на: комментарий от funky

ты просто сообщения на форуме набиваешь братик?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.