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
