Команда IT специалистов выполнит подготовку инфраструктуры для вашего бизнеса.
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов. 8(977)608-78-62 adm@nixm.ru
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов. 8(977)608-78-62 adm@nixm.ru
Golang выполнение команд на удаленном сервере
Golang выполнение команд на удаленном сервере
Нашла на гитхабе простенькую репу, форкнула, распарсила аргументы командной строки
и получила готовую прогу по выполнению комманд на удаленной машине по протоколу ssh.
Для начала познакомим удаленный сервер со своим ключем, потому как авторизация проходит
автоматически, безпарольно.
Установим нужный репозиторий
Напишем скрипт cmd_remote.go
Скомпилируем его
К стати уже скомпилированный скрипт можно запускать на системе без установленых golang и
хабовских дополнительных репозиториев. И скрипт можно назвать покороче например cmd.go и
закинуть его в директорию прописанную в переменной $PATH. Формат запуска программы такой
Мы получим вывод команды запущенной на удаленной машине
Давайте прочтем например таким же образом файл конфигурации на удаленной машине
Скомпилированный код программы можно взять от сюда под именем cmd_remote без расширения .go
https://github.com/olecya/go
[album]220[/album]
Почему то в галерее не могу вставить изображение
[album]221[/album]
и получила готовую прогу по выполнению комманд на удаленной машине по протоколу ssh.
Для начала познакомим удаленный сервер со своим ключем, потому как авторизация проходит
автоматически, безпарольно.
Код: Выделить всё
ssh-copy-id -i ~/.ssh/id_rsa user@server.com
Код: Выделить всё
go get github.com/plutov/go/sshcmd # Что бы не тянуть сторонние бибилиотеки из этой репы
# можете вставить форкнутую github.com/olecya/go/sshcmd
Код: Выделить всё
package main
import (
"github.com/olecya/go/sshcmd"
"fmt"
"flag"
"strings"
)
func main() {
flag.Parse()
var str []string
str = strings.Split(flag.Arg(0), "@")
fmt.Println(sshcmd.Run(str[0], str[1], strings.Join(flag.Args()[1:], " ")))
}
Код: Выделить всё
go build cmd_remote.go
хабовских дополнительных репозиториев. И скрипт можно назвать покороче например cmd.go и
закинуть его в директорию прописанную в переменной $PATH. Формат запуска программы такой
Код: Выделить всё
cmd user@server.com ps ax | grep sshd
Код: Выделить всё
ps ax | grep sshd
Код: Выделить всё
cmd user@server.com cat /etc/resolv.conf
https://github.com/olecya/go
[album]220[/album]
Почему то в галерее не могу вставить изображение
[album]221[/album]
Последний раз редактировалось nezabudka 19 сен 2015, 23:04, всего редактировалось 4 раза.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Re: Golang выполнение команд на удаленном сервере
Заработала Галерейка.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
-
- Местный говорун
- Сообщения: 579
- Зарегистрирован: 19 янв 2015, 15:56
- Откуда: Russian_federation, какой то
Re: Golang выполнение команд на удаленном сервере
а чем простой ssh для выполнения команд на удалённой машине не подходит?
ДА же вот такое можно сделать, запуск локального скрипта на удалённой машине
Или вот
ДА же вот такое можно сделать, запуск локального скрипта на удалённой машине
Код: Выделить всё
$ ssh root@192.168.1.1 'bash -s' < local_script.sh
Код: Выделить всё
$ ssh root@192.168.1.1 << EOF
uname -a
grep "model name" /proc/cpuinfo
grep MemTotal /proc/meminfo
EOF
Последний раз редактировалось Шпак Дмитрий 20 сен 2015, 13:50, всего редактировалось 1 раз.
Re: Golang выполнение команд на удаленном сервере
Почему не подходит? Все подходит. Просто штурмую golang и цепляюсь за все что можно и интересно.Шпак Дмитрий писал(а):а чем простой ssh для выполнения команд на удалённой машине не подходит?
Вот такую вот например в bash-е приведу команду может кому пригодится
Код: Выделить всё
cat ~/text.txt | ssh user@server "cat >> copy_text.txt"
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay