通过脚本结果远程NFS配置

时间:2014-07-18 03:22:26

标签: python linux bash ssh

我真的很陌生 - 我主要是为了练习而这样做。我正在尝试创建一个脚本,允许在多个服务器上部署LEMP,并允许“NFS”配置,具体取决于服务器IP等。基本上,只是一个脚本,允许尽可能多的自动化向上扩展。对不起,如果我听起来无知 - 我很新!

到目前为止,我自动安装LEMP对我来说简单易行。对于SSHkeys来说肯定有点乱。一旦我弄清楚我在变量部分做错了什么,我会尽可能地清理它。基本上,所有内容都被添加到/ etc / exports上的新行,除了IP变量外。我相信这是因为它是一个局部变量,我正在远程进行?谢谢!

以下是我遇到问题的部分:

for NFS in $(cat nfs.txt)
do
        for hostname in $(cat hostname.txt)
        do
ssh-keygen -t rsa
ssh root@$NFS mkdir -p .ssh
cat .ssh/id_rsa.pub | ssh root@$NFS 'cat >> .ssh/authorized_keys'
ssh root@$hostname mkdir -p .ssh
cat .ssh/id_rsa.pub | ssh root@$hostname 'cat >> .ssh/authorized_keys'
ssh root@$hostname "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"
ssh root@$NFS "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"
IP=`ssh root@$hostname  ifconfig | grep Bcast | cut -d: -f2 | cut -d" " -f1`
echo $IP > ip.txt
scp ip.txt root@$hostname:ip.txt
IPLOCAL=`cat ip.txt`
ssh root@$NFS 'echo -e "/var/www/html        $IPLOCAL(rw,sync,no_root_squash,no_subtree_check)" >> /etc/exports'
done
done

这就是我原来拥有的

for NFS in $(cat nfs.txt)
do
for hostname in $(cat hostname.txt)
do
ssh-keygen -t rsa
ssh root@$NFS mkdir -p .ssh
cat .ssh/id_rsa.pub | ssh root@$NFS 'cat >> .ssh/authorized_keys'
ssh root@$hostname mkdir -p .ssh
cat .ssh/id_rsa.pub | ssh root@$hostname 'cat >> .ssh/authorized_keys'
ssh root@$hostname "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"
ssh root@$NFS "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"
IP=`ssh root@$hostname ifconfig | grep Bcast | cut -d: -f2 | cut -d" " -f1`
ssh root@$NFS 'echo -e "/var/www/html $IP(rw,sync,no_root_squash,no_subtree_check)" >> /etc/exports'
done
done

1 个答案:

答案 0 :(得分:0)

如果要将远程变量的值设置为local,则必须使用这样的语法。

localValue='local'
ssh user@remote 'remoteValue='"$localValue;"'echo remoteValue'

因此,如果我理解你的目的,你应该编写如下代码:

...
IP=`ssh root@$hostname ifconfig | grep Bcast | cut -d: -f2 | cut -d" " -f1`
for i in $IP
do
ssh root@$NFS 'echo -e /var/www/html '"$i"'(rw,sync,no_root_squash,no_subtree_check) >> /etc/exports'
done
...