Fabric performs this caching of the ssh config file deliberately to improve
performance.  The easiest way for you to break this functionality is to
delete the '_ssh_config' key from the env dictionary, since that key's
existence is what Fabric tests for before loading the config from disk
here: https://github.com/fabric/fabric/blob/master/fabric/network.py#L192

On Wed, Jan 25, 2017 at 6:13 AM Sergei Vorobyov <[email protected]> wrote:

> Greetings!
>
> Fabric seems to ignore dynamic changes happening in the
>
> env.ssh_config_path
>
> It looks like that this file is loaded just once and cached, and any
> subsequent changes to this file are simply ignored. Below is the example:
> in the first iteration my code (shown in the end) greps this file, shows
> that the initial IP address value for remoteit host is ...56, and then
> correctly executes ifconfig on this host.
>
> 30 seconds pass before the next iteration, and during this time I alter
> the config file, remoteit becomes ...80, as seen on the second grep, but
> fabric continues to connect to a *stale* address 56
>
> env.ssh_config_path=/home/autotest/code/repo/pftest/conf/ssh/config
> [localhost] local: grep -A 1 "remoteit$"
> /home/autotest/code/repo/pftest/conf/ssh/config
> Host remoteit
> HostName 10.46.29.56
> [remoteit] run: ifconfig | grep "10\.46\."
> [remoteit] out:           inet addr:10.46.29.56  Bcast:10.46.29.255
>  Mask:255.255.255.0
>
> env.ssh_config_path=/home/autotest/code/repo/pftest/conf/ssh/config
> [localhost] local: grep -A 1 "remoteit$"
> /home/autotest/code/repo/pftest/conf/ssh/config
> Host remoteit
> HostName 10.46.29.80
> [remoteit] run: ifconfig | grep "10\.46\."
> [remoteit] out:           inet addr:10.46.29.56  Bcast:10.46.29.255
>  Mask:255.255.255.0
>
>
> The full code of the test is:
>
> def tst_03():
>     while True:
>         print('env.ssh_config_path={}'.format(env.ssh_config_path))
>         local('grep -A 1 "remoteit$" {}'.format(env.ssh_config_path))
>         with settings(use_ssh_config=True, host_string='remoteit',
> path='/sbin'):
>             run('ifconfig | grep "10\.46\."')
>         time.sleep(30)  # to let me alter def tst_03():
>     while True:
>         print('env.ssh_config_path={}'.format(env.ssh_config_path))
>         local('grep -A 1 "remoteit$" {}'.format(env.ssh_config_path))
>         with settings(use_ssh_config=True, host_string='remoteit',
> path='/sbin'):
>             run('ifconfig | grep "10\.46\."')
>         time.sleep(30)  # to let me alter
>                                #
> env.ssh_config_path=/home/autotest/code/repo/pftest/conf/ssh/config
> _______________________________________________
> Fab-user mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/fab-user
>
_______________________________________________
Fab-user mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/fab-user

Reply via email to