Last active
October 21, 2020 12:24
-
-
Save cemtopkaya/b07529142dcd3aa0c990991a156a6baf to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
################################################################################### | |
# Argumanlar üstünden değişkenler ayarlaniyor | |
# ./ssh_config.sh "$SSH_USER_ID" "$HOST" "$HOME" | |
# ./ssh_config.sh cemtopkaya 192.168.13.239 /root | |
################################################################################### | |
declare -r DEFAULT_SSH_USER_ID="ctopkaya" | |
declare -r SSH_USER_ID=${1:-$DEFAULT_SSH_USER_ID} | |
declare -r DEFAULT_HOST="192.168.13.239" | |
declare -r HOST=${2:-$DEFAULT_HOST} | |
declare -r REMOTE="${SSH_USER_ID}@${HOST}" | |
declare -r DEFAULT_HOME="/root" | |
declare -r HOME=${3:-$DEFAULT_HOME} | |
################################################################################### | |
# SSH Ayarlari Yapiliyor | |
################################################################################### | |
# SSH İçin Değişkenler Ayarlaniyor | |
declare -r SSH_DIR="${HOME}/.ssh" | |
declare -r SSH_CONFIG="${HOME}/.ssh/config" | |
declare -r SSH_KEY_PUBLIC="${SSH_DIR}/deb_pkg_ssh.pub" | |
declare -r SSH_KEY_PRIVATE="${SSH_DIR}/deb_pkg_ssh" | |
if [ ! -d "$SSH_DIR" ]; | |
then | |
# .ssh Dizini 700 izin seviyesiyle yaratilsin | |
mkdir -m700 /root/.ssh | |
fi | |
if [ ! -f "$SSH_CONFIG" ] || ! grep -q $HOST "$SSH_CONFIG" ; then | |
# config Dosyasi yaratilsin (otomatik ssh baglantisi icin) | |
su - << EOF | |
echo " | |
Host ${HOST} | |
Hostname ${HOST} | |
StrictHostKeyChecking no | |
IdentityFile ${SSH_KEY_PRIVATE} | |
" >> "$SSH_CONFIG" | |
EOF | |
chmod 644 "$SSH_CONFIG" | |
fi | |
# SSH icin public anahtar olusturulsun | |
if [[ ! -f "$SSH_KEY_PUBLIC" ]]; then | |
su - << EOF | |
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxQEFpKbU5rYpwSlPtLawS/krp+9QXEOitezW2s4bKYmDNe3V4pV8tV8o4rVt8owch/Hk7oSHLuvr1PZ/Llqes8KI8Ru+SFCKTZx7RHL3EUrSuw9xuBD8NRbANwqik10rqec44uxSV0RL3vOLe4tO78y9pthMaZX7PThZ1M3N6sP+H/AR3txJBhQ42md+nMycQJsWgZfWdsrIZV42H2VVAzCiLOdAI3NRsycOpsNRHGFJsPZBvqtwzQDMRyfruKMa8TiaV4VfyLV2zJtzromiUKmG5vF+GlbvuqoSvumEmgDwzfPJrHM56fM29f5U4j9jEjlVi1lUImNvPgteq+zXZ vagrant@ubuntu-xenial" >> "$SSH_KEY_PUBLIC" | |
EOF | |
chmod 644 "$SSH_KEY_PUBLIC" | |
fi | |
# SSH icin private anahtar olusturulsun | |
if [[ ! -f "$SSH_KEY_PRIVATE" ]]; then | |
su - << EOF | |
echo "-----BEGIN RSA PRIVATE KEY----- | |
MIIEpQIBAAKCAQEAsUBBaSm1Oa2KcEpT7S2sEv5K6fvUFxDorXs1trOGymJgzXt1 | |
eKVfLVfKOK1bfKMHIfx5O6Ehy7r69T2fy5anrPCiPEbvkhQik2ce0Ry9xFK0rsPc | |
bgQ/DUWwDcKopNdK6nnOOLsUldES97zi3uLTu/MvabYTGmV+z04WdTNzerD/h/wE | |
d7cSQYUONpnfpzMnECbFoGX1nbKyGVeNh9lVQMwoiznQCNzUbMnDqbDURxhSbD2Q | |
b6rcM0AzEcn67ijGvE4mleFX8i1dsybc66JolCphubxfhpW77qqEr7phJoA8M3zy | |
axzOenzNvX+VOI/YxI5VYtZVCJjbz4LXqvs12QIDAQABAoIBAQCHI0Q7l27yEJuR | |
zTl7hOzCdlpLVpJ3G48qZNuo9er4dlTzlQMU/pA4E8y7tYAg4HLZuJH9onYPy/j1 | |
7QvdvnkMY1Jtvm984hkSZPab29vayGu1KuLuhhJEXjNB6n2FYBdf+Yn+urORHZvm | |
gX4/DJT9oQUvBYA/Cc7K4vBAXv/WM8LOqvOjAVkHTCWyz9O2bqVz7hvzf/rp706h | |
3IIYfbjQWX1ot9vJvAsaFqEEJokK0fzuoWTAUbITi9Lf+VNetsPADv0GDYHzu7a/ | |
SUte5mo9OX36OUbYoRJxooLg5HEOSJGtTAxsu9lGEg9rvvLDfIOpzjppbUp9W53t | |
K4oBGeUBAoGBAOKZI3w4aDc3AV93G/zLUzh8FVB1Q3V+SM5CsD+z0tGznqeeDzAX | |
eWHsB+EJU/x9q+b+5SyG78aEq3YNNEykAXMxZoLT7MzdFznWfCL7SgIWAVUrPZDw | |
ISvuHwdRtRrdjK/Qz+LvMIl3/Aal/RjZB7kMbAQOjZ7TTA9UhBa3injxAoGBAMg/ | |
9kmwlU2pDKiyiCFlEc31l0DB25bfFQBPD0+bJ9xu7Vk9JdjbTp8D3mL8dvdxaDL7 | |
0UREl7Mr5uV5Vm39X1V5nUrZgAPGaXdJpKgg7WKsK60mCATGL6VqJ835FMnp7uLe | |
3EUKfNLRZymzC+ph5GmWiOjCvNSwiivoC81l0UtpAoGAB9hfdySIzyiTXpfEG0t6 | |
1SDOqBt3O3Ek2idK7Nmv+dyrKIh7ZCHb7Pz8BNmK09oSAoxeqNz/HjNnsE2iuuiO | |
uEtEjlECCNG6xSDc6WUj2dCjOSynFAaMT3YOEvXMPGLhRREIsYWwe4Hw8tX6Xkrd | |
TpXUg4txccdFAd7eN98g5zECgYEAkY2MYzurCmvZ+7TpJfzk2COu8S73gc5c4YCV | |
zHMmoh8u/jJoFBw0JXkWaDTB9FHGP2iyT0DcUyuSBTIRFJmadfKT1hgJ6LSLbF1n | |
BZ4JbjNe+9gs8+tqLn3euORXq/wR223KBZT97e6vYav2+UJ2WBlHIoiJ4L8Bb7CX | |
A5ECdCECgYEAo/XA8PK1LwmTBxhzW9n4l5u0k39NH5BT4A94Obg9bxs47YPw/P9Q | |
CKNf4znMVOxOAvAwWeLZfLdSvgqM3TvKFyOb8d3wNaVh5fxYQOe70E0wN75CUEub | |
ZALIINjuHDHUVyusbzP3xJK4iqG20K5DkRGaLnrFUMbr4PaUArtdqoI= | |
-----END RSA PRIVATE KEY-----" >> "$SSH_KEY_PRIVATE" | |
EOF | |
chmod 600 "$SSH_KEY_PRIVATE" | |
fi | |
# Uzak sunucuya gizli anahtarimizi uzak sunucuya kayit ettirelim | |
ssh-copy-id -i "$SSH_KEY_PRIVATE" "$REMOTE" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
################################################################################### | |
# Uzak sunucuda bir dizini listelemek için | |
# ssh kullanıcıAdı@uzakMakinaIP ls /dizin/yolu | |
# | |
# Listelenen dosyaları dosya adına göre büyükten küçüğe sıralamak için | |
# ls -lr > isimlerine göre liste halinde (-l) ve reverse yani tersten (-r) | |
# | |
# Dönen sonuçların içinde süzerek ilk satırı almak için | |
# grep -i -o /opt/cinar/packages/%s.*$ -m1 | |
# > -i : case insensetive (büyük küçük harf duyarsız) | |
# > -o : only-matching (eşleşen kısım sadece) | |
# > -m : veya --max-count=NUM ile eşleşen ilk satırdan sonra dursun (-m=1) | |
# | |
# Uzak bağlantıyla (SFTP) dosya çekilebilmesi FTP uygulamalarıyla mümkünken, | |
# SSH ile dosyayı çekmek için SCP komutunu kullanacağız. | |
# scp kullanici@uzak_ip:/dosya/yolu/dosya_adi /kaydedilecek/dizin/yolu | |
# | |
# İndireceğimiz dosya kurulsun istiyorsak | |
# apt-get install /indirilen/paketin/dosya/yolu/paketin_adi.deb | |
# | |
# ------------ Şifresiz Bağlantı İçin Yapılacaklar ------------------------------ | |
# Önce "gizli cümle" (passphrase) olmaksızın gizli ve açık anahtarlarını oluşturalım | |
# $ cd ~/.ssh | |
# $ ssh-keygen -b 2048 -t rsa -f 13_137 -q -N "" | |
# | |
# Açık anahtarı ssh bağlantısını yapmak istediğimiz uzak bilgisayarda authorized_keys dosyasına ekleyelim | |
# $ cat 13_137.pub | ssh ctopkaya@192.168.13.137 "chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys" | |
# | |
# ~/.ssh/config Dosyası oluşturup içinde ilgili adrese giderken hangi kimlik dosyasını kullanacağını belirtebiliriz | |
# | |
# vagrant@ubuntu-xenial:~/.ssh$ cat config | |
# Host 192.168.13.137 | |
# Hostname 192.168.13.137 | |
# IdentityFile ~/.ssh/13_137 | |
# | |
# bağlantıyı deneyebiliriz | |
# $ ssh ctopkaya@192.168.13.137 | |
# | |
################################################################################### | |
declare -r libcnrhttp2="libcnrhttp2_" | |
declare -r root="/opt/cinar/packages" | |
declare -r destination="/opt/cinar/packages" | |
declare -r id=ctopkaya | |
declare -r host=192.168.13.137 | |
declare -r remote=$id"@"$host | |
declare -r prefixes=("libcnrhttp2_" "libcnr5gmessages_" "libcnrcommon_" "cnrausf_" "cnrudm_" "cnrudr_") | |
declare cmd="" | |
#printf -v cmd "ssh %s ls %s/%s* -lr | awk 'NR==1'" "$remote" "/opt/cinar/packages" "libcnrhttp2_" | |
#printf -v cmd "ssh %s ls %s/%s* -lr | grep -i -o /opt/cinar/packages/%s.*$ -m1" $remote /opt/cinar/packages libcnrhttp2_ libcnrhttp2_ | |
declare filePath="" | |
for prefix in ${prefixes[@]} | |
do | |
printf -v cmd 'ssh %s ls %s/%s* -lr | grep -i -o /opt/cinar/packages/%s.*$ -m1' "$remote" "/opt/cinar/packages" "$prefix" "$prefix" | |
echo "$cmd\n" | |
#eval $cmd | |
filePath=$($cmd) | |
echo -e "\n------ $filePath --------" | |
echo "...Downloading..." | |
sudo scp ctopkaya@192.168.13.137:$filePath $destination | |
# Eğer kimlik doğrulama işini bir gizli & açık anahtar ile ayarlamışsanız -i anahtarıyla gizli anahtarı verebilir | |
# böylece hiç şifre girmeye gerek kalmadan dosyaları indirebiliriz | |
# Burada anahtarı 13_137 adıyla oluşturursak, 13_137.pub dosyası açık anahtarımız olacak | |
# sudo scp -i ~/.ssh/13_137 ctopkaya@192.168.13.137:$filePath $destination | |
echo -e "\n....Installing..." | |
sudo apt-get install $filePath | |
done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
################################################################################### | |
# Uzak sunucuda bir dizini listelemek için | |
# ssh kullanıcıAdı@uzakMakinaIP ls /dizin/yolu | |
# | |
# Listelenen dosyaları dosya adına göre büyükten küçüğe sıralamak için | |
# ls -lr > isimlerine göre liste halinde (-l) ve reverse yani tersten (-r) | |
# | |
# Dönen sonuçların içinde süzerek ilk satırı almak için | |
# grep -i -o /opt/cinar/packages/%s.*$ -m1 | |
# > -i : case insensetive (büyük küçük harf duyarsız) | |
# > -o : only-matching (eşleşen kısım sadece) | |
# > -m : veya --max-count=NUM ile eşleşen ilk satırdan sonra dursun (-m=1) | |
# | |
# Uzak bağlantıyla (SFTP) dosya çekilebilmesi FTP uygulamalarıyla mümkünken, | |
# SSH ile dosyayı çekmek için SCP komutunu kullanacağız. | |
# scp kullanici@uzak_ip:/dosya/yolu/dosya_adi /kaydedilecek/dizin/yolu | |
# | |
# İndireceğimiz dosya kurulsun istiyorsak | |
# apt-get install /indirilen/paketin/dosya/yolu/paketin_adi.deb | |
################################################################################### | |
declare -r libcnrhttp2="libcnrhttp2_" | |
declare -r root="/opt/cinar/packages" | |
declare -r destination="/opt/cinar/packages" | |
declare -r id=ctopkaya | |
declare -r host=192.168.13.239 | |
declare -r remote=$id"@"$host | |
declare -r prefixes=("libCinarNnefPFDmanagement", "cnrnef" "cnrnssf" "cnrnrf") | |
declare -r keyFile=~/.ssh/dpkg11 | |
declare cmd | |
declare filePath | |
# Eğer dosyaları indireceğimiz dizin yoksa oluşturacağız | |
if [ ! -d "$destination" ]; then | |
sudo mkdir -m 775 -p $destination | |
fi | |
if [ ! -f "$keyFile" ]; then | |
echo "Uzak bağlantıyı anahtar ikilisi üzerinden yapacak $keyFile dosyası yok!" | |
# Önce parola olmaksızın gizli/açık anahtar yaratılacak | |
sudo ssh-keygen -b 2048 -t rsa -f $keyFile -q -N "" | |
# Uzak sunucunun authorizedkeys dosyasına açık anahtar eklenecek | |
sudo ssh-copy-id -i $keyFile "$id@$host" | |
fi | |
# Anahtarları ihtiyaç olduğunda kullanıma sunacak ssh-agent çalıştırılır | |
eval $(ssh-agent) | |
# Gizli anahtarı agentın listesine ekleyeceğiz | |
sudo ssh-add $keyFile | |
# Yüklenmesi istenilen dosyaları uzak sunucunun | |
# paketler dizininde arayıp son sürümlerini yükleyeceğiz | |
for prefix in ${prefixes[@]} | |
do | |
printf -v cmd 'ssh -i %s %s ls %s/%s* -lr | grep -i -o /opt/cinar/packages/%s.*$ -m1' "$keyFile" "$remote" "/opt/cinar/packages" "$prefix" "$prefix" | |
echo "$cmd\n" | |
#eval $cmd | |
filePath=$($cmd) | |
echo -e "\n------ $filePath --------" | |
echo "\n...Downloading..." | |
sudo scp -i $keyFile $id@$host:$filePath $destination | |
echo -e "\n....Installing..." | |
sudo apt-get install $filePath | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
bash-script-list-get-install Dosyasında ssh isteklerinde config dosyasında bağlantı kurulacak uzak sunucunun adresine dair bir kayıt varsa gizli/açık anahtar ikilisi config dosyasında belirtilen yerden Identityfile özelliğinden çekilir.
Ancak istersek dosyanın yolunu ssh komutlarına -i anahtarıyla da verebiliriz. Bunun için bash-script-with-identityfile-list-get-install dosyasına bakabilirsiniz.