все символы от "/" и до "_", включительно
, а это не много ни мало 49 символов, в том числе и "@" (см. таблицу ASCII).lsof -n | grep root/mdb103
path = Path('some_dir')
abc = path.glob('ABC#[0-9].png')
def_ = path.glob('DEF#[0-9].png')
// Эти данные можно получить на странице вашего приложения на платформе Tuya.
var accessId = "<access id>";
var apiSecret = "<api secret>";
// Сканируем сеть на наличие доступных устройств Tuya.
// Хранение найденных устройств реализуется как душе угодно
var scanner = new TuyaScanner();
scanner.OnNewDeviceInfoReceived += (sender, info) =>
{
// логика сохранения найденных устройств
};
var api = new TuyaApi(region: TuyaApi.Region.CentralEurope, accessId: ACCESS_ID, apiSecret: API_SECRET);
var devices = await api.GetAllDevicesInfoAsync(anyDeviceId: DEVICE_ID);
foreach(var device in devices)
{
Console.WriteLine($"Device: {device.Name}, device ID: {device.Id}, local key: {device.LocalKey}");
}
var device = new TuyaDevice("<IP адрес>", "<local key>", "<device id>");
// Пример команды включения лампочки
// Метод FillJson автоматически подставляет нужные параметры, поэтому сразу пишем запрос.
// Про методы DPS можно почитать в официальной документации Tuya
var onCommand = device.FillJson("{\"dps\":{\"20\":true}}");
var request = device.EncodeRequest(TuyaCommand.CONTROL, onCommand );
// Посылаем сигнал. Если устройство не ответит, то падает исключение
var encodedResponse = await device.SendAsync(request);
var response = device.DecodeResponse(encodedResponse);
--restart always
). Еще с помощью Docker легко будет пробросить API ключи в переменное окружение. import ftplib
HOST = 'server'
USER = 'ftpuser'
PASSWD = 'ftppass'
FILE = 'file.ext'
FTP_DIR = 'dir'
with ftplib.FTP(HOST) as ftp:
try:
ftp.login(user=USER, passwd = PASSWD)
ftp.cwd(FTP_DIR)
with open(FILE, 'wb') as fp:
ftp.retrbinary('RETR ' + FILE, fp.write)
except ftplib.all_errors as err:
print('FTP error:', err)
comm -12 <(sort --parallel=4 1.txt) <(sort --parallel=4 2.txt) > some_output_file.txt