Если Вы хотите управление с более прекрасными зернами, чем хорошие заклинания удара maxschlepzig, это - довольно легкая вещь просто кодировать:
#include
#include
#include
#include
int main(int argc, char**argv){
useconds_t mdelay=0, delay;
if (argc<3){
fprintf(stderr,"%s * :\n\trun commands with a random delay\n",argv[0]);
exit(1);
}
mdelay=atol(argv[1]);
/* seed random number generator with the time */
srand(((unsigned int)time(NULL))%RAND_MAX);
delay = mdelay * (rand() / (1.0 + RAND_MAX));
usleep(delay*1000);
execvP(argv[2],getenv("PATH"),argv+2);
return 0;
}
Скомпилируйте с чем-то как gcc randomdelay.c -o randomdelay
и вызовите его как
$ randomdelay 10000 echo Hi!
Если Вы делаете, это - контекст программирования, Вы могли бы быть более обеспечены просто захват части кода, который выбирает случайную задержку Вас и звонит exec
функция семейства (то, какой Вы хотите, зависит от точно, как у Вас есть указанный внутренне).
Выйдите здесь:
rand
/srand
нормальны (не хороший PRNGs, обратите внимание, просто, что они делают то, что в странице справочника говорится, что они делают). Я испытывал некоторые затруднения из-за него на моем поле Mac OS X, где те функции удерживаются от использования в пользу random
/srandom
.rand
имели плохие числовые характеристики. Это не должно быть проблемой в этом приложении, но если это, замените его лучшим PRNG.$ ssh-copy-id "-p 8129 user@host"
Источник: http://it-ride.blogspot.com/2009/11/use-ssh-copy-id-on-different-port.html
Примечание: Порт должен быть перед user@host, или он не решит
Беглый взгляд на источник указывает на это ssh-copy-id
кажется, не имеет никакой функции, которая разрешает это. Однако Вы могли сделать что-то как следующее вместо этого:
ssh -p8129 user@host 'cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_*.pub
ssh-copy-id
не берет аргументов, что это могло передать к базовому ssh
команда, но можно настроить псевдоним в ~/.ssh/config
.
Host myhost
HostName hostname
Port 8129
Затем выполненный ssh-copy-id myhost
.
-p
флаг на постоянном клиенте ssh
попытки. Это - поэтому не только правильный ответ на этот вопрос, это - Правильная Вещь, период.
– Warren Young
20.01.2012, 16:00
Я всегда использовал scp
скопировать его:
scp -P 8129 ~/.ssh/id_*.pub user@host:
ssh -p 8129 user@host 'cat id_*.pub >> ~/.ssh/authorized_keys'
Хотя я должен сказать, я буду, вероятно, использовать другие (one-line/connection) методы, если я буду помнить их в будущем. Но это - другая опция для Вас.
Начиная с openssh-клиента_6.2 для команды, разрешающей этот синтаксис, теперь имеется специальный флаг порта:
ssh-copy-id -p 8129 user@example
Он также добавил поддержку добавления других опций ssh с флагом -o.
Вот man-страница Ubuntu для соответствующей версии, представленная в 13.04: http://manpages.ubuntu.com/manpages/saucy/man1/ssh-copy-id.1.html
С моей macOS это сработало.
ssh-copy-id -i ~/.ssh/id_rsa.pub -p <port> user@host
En CentOS7 es solo:
ssh-copy-id "-p 1234" user@host
Tenga cuidado de no colocar usuario@host entre comillas o obtendrá el siguiente error en esta distribución:
/usr/bin/ssh-copy-id: ERROR: Bad port ' 1234 user@host'
Я использую эту команду:
ssh-copy-id ssh://user@ip_addr:port
Пример:
ssh-copy-id ssh://root@1.2.3.4:23
Есть четыре способа добиться этого:
ssh-copy-id -p <port> <user>@<remote-host>
ssh-copy-id "<user>@<remote-host> -p <port>"
ssh -p <port> <user>@<remote-host> 'cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_*.pub
scp -P <port> ~/.ssh/id_*.pub <user>@<remote-host>:
ssh -p <port> <user>@<remote-host> 'cat id_*.pub >> ~/.ssh/authorized_keys'
~/.ssh/config
## Host <alias>
## Hostname <remote-host>
## Port <port>
## User <user>
ssh-copy-id <alias>
ssh
имеет синтаксисssh -p 1234 user@host
,ssh-copy-id "-p 1234 user@host"
и наконецscp -P 1234 user@host
. Было бы настолько хорошо иметь тот же синтаксис. – Tombart 04.02.2015, 14:58rsync -e "ssh -p 1234" user@host
. Я клянусь, что это - больше стычки, чем стоит использовать пользовательский порт. – garetmckinley 25.09.2015, 07:10ssh-copy-id "root@192.168.0.100 -p 12345" -i ~/.ssh/id_rsa.pub 192.168.0.100
– degenerate 02.12.2017, 04:40