Это могло быть связано с Вашим маршрутизатором, пытающимся обработать FTP соединение NAT, отслеживающее автоматически. Это только произошло бы на порте 21, не 22. Выезд http://www.faqs.org/docs/iptables/complexprotocols.html
Если вы используете bash, вы захотите использовать [[
и ]]
вместо [
и ]
. Это значительно упрощает сравнение, как вы делаете здесь.
Во-первых, каково начальное значение $ n
?
Попробуйте следующее:
ssh usr@host 'for n in {10..1}; do [[ -d /backup/$(($n-1)) ]] && /bin/mv /backup/$(($n-1)) /backup/${n}; done'
Это должно быть . Предполагается, что ваш начальный номер 10
. В зависимости от того, откуда берется $ n, это можно изменить. Обратите внимание, что в mv
указан полный путь ... это потому, что, когда вы выполняете удаленный сеанс в ssh, он, как правило, не выполняет ваши .bashrc и .bash_profile, что означает, что у вас нет $ {PATH } пока не установил. Возможно, есть способ обойти это, но я не знаю, что это.
Написано более понятным для человека:
for n in {10..1}
do
if [[ -d /backup/$src ]]
then
/bin/mv /backup/$src /backup/$dst
fi
fi
Поскольку вы выполняете его удаленно,
Поместите сценарий в файл на локальном компьютере, например, резервную копию .sh
и запустите удаленное выполнение следующим образом:
ssh user @ remotehost
Это позволяет вам запускать сценарий на удаленном хосте без фактического копирования его на удаленный хост.
Я использую этот метод для сбора технических характеристик оборудования из удаленных систем .