Golang выполнение команд на удаленном сервере
Добавлено: 19 сен 2015, 20:52
Нашла на гитхабе простенькую репу, форкнула, распарсила аргументы командной строки
и получила готовую прогу по выполнению комманд на удаленной машине по протоколу 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.confhttps://github.com/olecya/go
[album]220[/album]
Почему то в галерее не могу вставить изображение
[album]221[/album]