У меня есть сценарий оболочки, без которого я просто не могу обойтись: bar от Theiling Online
Я часто использую SSH на разных * nix серверах. Однако я не являюсь системным администратором и обычно не имею времени или привилегий для его установки на каждом сервере, к которому я подключаюсь.
Это, по-видимому, очень переносимый sh
сценарий, в котором есть параметры командной строки для экспорта себя в качестве функции оболочки, что заставило меня задуматься: могу ли я использовать одну из субъективно неясных функций OpenSSH, чтобы экспортировать ее везде, куда бы я ни пошел?
Моей первой мыслью было присвоить исходный код переменной среды, например, BAR = "cat -v"
и затем выполнить ее с другой стороны как `$ BAR`, но 1) я даже не могу заставить пример cat работать локально, 2) я не знать, как поместить фактический многострочный источник скрипта в переменную окружения и 3) мне еще не удалось увидеть машину с PermitUserEnvironment
включенным.
Я думаю, что я мог бы даже сделать с опцией ssh написать файл с именем ~/bar
при входе в систему, но более изменчивое решение было бы лучше.
Звонок wget http://.../bar
при входе в систему будет неприемлемым.
Есть идеи?
PS Специфичные для шпатлевки решения, хотя я сомневаюсь, что они существуют, тоже подойдут
Редактировать: причина, по которой я не хочу использовать wget и другие файловые решения, заключается в том, что я не хочу оставлять отметку, поскольку иногда я подключаюсь как пользователь других пользователей или как root. Я также не хочу, чтобы каждый сервер, к которому я подключаюсь, делал HTTP-запрос. Я хочу, чтобы это было как можно меньше.
AcceptEnv = LANG LC_*
что все рассматриваемые машины имеют, что означает, что я мог бы использовать взломать как использованиеLC_BAR
вместоBAR
.LocalCommand
кажется, настроен локально, и я смог выполнитьecho
, но я не знаю, как экспортировать переменную среды (или две) оттуда.export x=y
не работалRemoteCommand
.Вот вариант решения Денниса Уильямсона, который не требует, чтобы вы были в состоянии ssh с удаленного компьютера обратно на ваш локальный компьютер. В локальной системе:
В удаленной системе:
Я тестировал компоненты этого, но не использовал
bar
, чего у меня нет.источник
В своем вопросе вы сказали, что использование wget недопустимо. Вы против wget или против копирования файла? Я не думаю, что вы сможете получить желаемую функциональность, если не скопируете файл на локальный компьютер.
Может быть, вы можете получить файл (но я уверен, что это не удастся). Команде хотелось бы следующее в зависимости от оболочки:
если вы специально против wget, вы можете попробовать scp, с настройкой ключей ssh это будет означать отсутствие пароля.
Лично для меня работало помещать мои сценарии оболочки в хранилище Subversion, а затем проверять репозиторий на каждой машине. если я обновил скрипт, я могу проверить его обратно в SVN, а затем обновить его на других машинах.
источник
git
и загружая черезHTTP
.Это может дать вам начало:
В вашей локальной системе:
В удаленной системе:
источник