Похоже, ваш цикл пытается добавить данные для входа в систему каждой машины в удаленный файл на той же машине. Вы уверены, что хотите добавить? Возможно, ваш цикл ничего не делает, а файлы уже существуют?
Отладка, исключив ssh из вопроса. Замените строку, начинающуюся с 'echo', следующим образом:
echo "$system => machine:$machine username:$username password:$password"
и убедитесь, что каждая из переменных $ system, $ machine, $ username и $ password соответствует ожиданиям.
Кстати, более эффективным способом написания этого может быть использование awk, или sed, или даже tr (в зависимости от формата вашего списка систем) для извлечения трех полей, а затем использование оболочки при цикл чтения для их итерации, что позволяет избежать трех вызовов awk для каждого хоста, к которому осуществляется доступ. Например, если «$ allsystems» содержит
mach1;user1;pass1 mach2;user2;pass2 mach3;user3;pass3
без посторонних полей или другой нежелательной информации, вы можете использовать это:
echo "$allsystems" | tr '; ' '\t\n' | while read mach user pass
do
echo ...
done