Ваша команда оценивает $(ssh-agent -s)
на локальной машине, так как это между двойными кавычками. Необходимо поместить целую команду для работы шлюза между одинарными кавычками. Так как та команда сама содержит одинарные кавычки (для защиты кода, это, как предполагается, выполняется на цели), необходимо выйти из тех одинарных кавычек как '\''
.
ssh user@Gateway 'ssh Target '\''eval $(ssh-agent -s); ssh-add my_key; mpirun --hostfile .hosts program'\'
Можно автоматизировать шаг шлюза путем конфигурирования локального ssh клиента. Вставьте это Ваш ~/.ssh/config
:
Host Target
User user
ProxyCommand ssh Gateway nc %h %p
nc
netcat. Затем выполненный
ssh Target 'eval $(ssh-agent -s);ssh-add my_key;mpirun --hostfile .hosts program'
непосредственно от локальной машины.
Вы могли использовать install
команда (часть GNU coreutils) с фиктивным файлом, например.
install -b -m 755 /dev/null newfile
-b
опция создает резервную копию newfile
если это уже существует. Можно использовать эту команду для установки владельца также.
touch
всегда создает файл, если он не существует, всегда переходит по символьным ссылкам и всегда делает неисполняемый файл файла. Можно решить чтение и записать биты через umask.
(umask 077; touch file) # creates a 600 (rw-------) file
(umask 002; touch file) # creates a 664 (rw-rw-r--) file
“Безопасное” атомарное создание файла (в частности, с O_NOFOLLOW
) не возможно с традиционными инструментами оболочки. Можно использовать sysopen
в жемчуге. Если у Вас есть BSD-вдохновленное mktemp
утилита, это создает файл атомарно с O_NOFOLLOW
; Вы имеете звонить chmod
впоследствии, если режим по умолчанию 600 не является правильным.
touch
имел опцию создания исполняемых файлов, это действительно, что я после. Затем umask
мог использоваться для адаптации деталей. Печально нет никакого пути с umask
и touch
создать исполняемые файлы.
– quornian
07.09.2012, 18:42
touch
сопровождаемый chmod +x
.
– Gilles 'SO- stop being evil'
07.09.2012, 18:44
У меня есть скрипт Bash в моем домашнем каталоге /home/anthony/touchmod.sh
, содержащий:
#!/bin/bash
touch "$2"
chmod "$1" "$2"
, так что если мне нужно создать ReadMe.txt
С 644 разрешениями я могу напечатать:
~/touchmod.sh 644 readme.txt
Основываясь на ответе @teppic, если вы хотите создать файл с содержимым и режимом одновременно (bash):
install -m 755 <(echo commands go here) newscript
<()
помещает вывод во временный файл, см. Процесс -Подстановка
install
– quornian 07.09.2012, 18:37