Hi folks, first of all I need to say that I'm not a programmer, but I need to do something based on programming.... My problem is that I need to modify the DNS servers in almost 1000 nanostation equipments. I have access to them through ssh and I want to make a script to acomplish the task. I already made a file with the ip addresses of all CPE's (named client.txt). I think my script can begin like this: #!/bin/bash for host in $(cat client.txt); do ssh Administrador@$host sameforall; sed 's/x.x.x.x/y.y.y.y /etc/resolve.conf; sed 's/w.w.w.w/z.z.z.z /etc/resolve.conf; # here I restart network service but I don't have the command yet done. y.y.y.y and z.z.z.z are the new DNS servers and x.x.x.x w.w.w.w the old ones I know this is far away to be correct, but I need somebody help me. The first problem I'm going to find is that ssh prompts me to put the given servers ssh key to my known_hosts file, how can I solve this??? Can anybody please help me??? Thanks in advance. BR.
You'd probably want something like this: Code: #!/usr/bin/env bash while read i; do ssh Administrator@${i} << EOF sed 's/x.x.x.x/y.y.y.y "/etc/resolv.conf" sed 's/w.w.w.w/z.z.z.z "/etc/resolv.conf" systemctl restart networking EOF done < "client.txt"
You can apparently setup password less Login Using SSH Keygen. You dont need to put password each time script runs. A quick google give idea regarding how to setup : Refer Also if you just need to update new namserver IP, why not use echo? like, Code: echo "nameserver 8.8.8.8" > /etc/resolve.conf echo "nameserver 8.8.4.4" >> /etc/resolve.conf
hi @24x7servermanagement !, when I try to create .ssh Directory on the remote host (You can apparently setup password less Login Using SSH Keygen) it ask me for the password, so I'm back to square one... In the other hand the echo solution worked fine!! Now I have to figure out how can I solve the password issue (I'm thinking in sshpass maybe). I'll post results.
1. Create a key pair on your local machine Code: ssh-keygen -t rsa -b 4096 That would create a rsa keypair with 4096 bit and by default it will be stored as ~/.ssh/id_rsa and ~/.ssh/id_rsa.pub 2. Copy public key to the server Code: ssh-copy-id -i .ssh/id_rsa.pub user@remote_server If you'e not in your home folder, you have to supply the according path to the public key. 3. On the server On Debian it's now default that you can't login as root directly. You may need to change the /etc/ssh/sshd_config and enable this option: Code: PermitRootLogin yes After editing the sshd_config, you'll need to restart/reload the sshd server. This is only require if you want to login as root. Step 2 may fail if it's not enabled and you try to add your public key to the server's root authenticated keys. If so, repeat step 2 after enabling root login. You could also add this line to the sshd_config Code: PermitRootLogin without-password With that, you can only login through a key and not with a password. 4. On the client You can now login in your server without being asked for a password Code: ssh user@remote_server